
在现代web应用中,当用户提交表单时,提供即时反馈至关重要。一个常见的做法是在提交按钮上显示加载动画并禁用按钮,以防止重复提交,并告知用户操作正在进行。本文将详细介绍如何利用jquery和font awesome实现一个可复用的加载按钮功能。
我们首先定义一个核心的JavaScript函数 toggleLoader,它负责控制按钮的加载状态。这个函数接受一个布尔值参数 show,根据其值来显示或隐藏加载图标并启用/禁用按钮。
/**
* 切换按钮的加载状态。
* @param {boolean} show - true 表示显示加载动画并禁用按钮,false 表示隐藏加载动画并启用按钮。
*/
const toggleLoader = show => {
// 选取所有具有 .btn-sabt 类的按钮
$('.btn-sabt')
.prop('disabled', show) // 根据 show 的值禁用或启用按钮
.find('i') // 查找按钮内部的 <i> 标签(加载图标)
.toggleClass('hide', !show); // 根据 show 的值切换 'hide' 类来显示或隐藏图标
};函数解析:
为了使 toggleLoader 函数生效,我们的提交按钮需要包含一个用于显示加载动画的 <i> 标签。我们使用 Font Awesome 图标库来提供加载图标。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<form id="MobileUserForm" method="post">
<div class="form-group">
<label for="Mobile">手机号</label>
<input id="Mobile" type="number" class="form-control" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-sabt">
<i class="fa fa-refresh fa-spin hide"></i> 保存
</button>
</div>
</form>HTML 结构解析:
我们需要一个简单的 CSS 规则来控制 hide 类的显示/隐藏。
.hide {
display: none !important;
}CSS 解析:
现在,我们将 toggleLoader 函数与表单的提交事件关联起来。
$(function() {
// 当 DOM 完全加载后执行
$('#MobileUserForm').on('submit', (event) => {
event.preventDefault(); // 阻止表单的默认提交行为
toggleLoader(true); // 显示加载动画并禁用按钮
// 在此处执行实际的表单提交或异步操作
// 例如:通过 AJAX 发送数据到服务器
// 模拟一个异步操作(例如 AJAX 请求),持续 3 秒
// 在实际应用中,请移除 setTimeout,并在异步操作完成后调用 toggleLoader(false)
setTimeout(() => {
toggleLoader(false); // 隐藏加载动画并启用按钮
alert('表单提交模拟完成!'); // 仅作演示
// 可以在此处执行表单成功提交后的逻辑,例如重定向或更新UI
}, 3000);
});
});事件处理解析:
异步操作: 表单提交通常涉及网络请求,这是一个异步过程。务必在异步请求(如 AJAX)的 success、error 或 complete 回调函数中调用 toggleLoader(false),以确保无论成功或失败,按钮都能恢复正常状态。
错误处理: 如果异步提交失败,同样需要调用 toggleLoader(false) 来恢复按钮,并可能显示错误信息。
通用性: 当前的 toggleLoader 函数内部使用了 $('.btn-sabt') 这个硬编码的选择器。如果您的不同表单使用不同的按钮类名,您可以对 toggleLoader 函数进行修改,使其接受一个选择器作为参数,从而增强其通用性:
/**
* 更通用的切换按钮加载状态函数。
* @param {string} buttonSelector - 目标按钮的 jQuery 选择器字符串。
* @param {boolean} show - true 表示显示加载动画并禁用按钮,false 表示隐藏加载动画并启用按钮。
*/
const toggleGenericLoader = (buttonSelector, show) => {
$(buttonSelector)
.prop('disabled', show)
.find('i')
.toggleClass('hide', !show);
};
// 使用示例:
// toggleGenericLoader('#MobileUserForm .btn-sabt', true);
// toggleGenericLoader('#AnotherForm .submit-button', false);CSS 定制: 您可以根据需要修改 Font Awesome 图标(例如 fa-spinner、fa-circle-o-notch 等)或调整图标的颜色、大小等样式。
用户体验: 确保加载动画的显示时间不要过短或过长。对于非常快速的操作,有时加载动画可能一闪而过,反而会分散用户注意力。
通过上述步骤,我们成功创建了一个可复用的 jQuery 函数,用于在表单提交时为按钮添加加载状态。这种方法不仅提升了用户体验,通过禁用按钮也有效防止了重复提交,是现代Web开发中一个非常实用的技巧。通过灵活运用和适当的扩展,您可以将此模式应用于各种表单和按钮场景。
以上就是使用jQuery为表单提交按钮添加加载状态的通用函数实现的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号