使用jQuery为表单提交按钮添加加载状态的通用函数实现

使用jQuery为表单提交按钮添加加载状态的通用函数实现

本教程将指导您如何使用jQuery和Font Awesome创建一个可复用的JavaScript函数,用于在表单提交时为按钮显示加载动画并禁用按钮,从而提升用户体验。文章将详细介绍HTML结构、CSS样式以及JavaScript的实现逻辑,并提供示例代码和使用注意事项。

在现代web应用中,当用户提交表单时,提供即时反馈至关重要。一个常见的做法是在提交按钮上显示加载动画并禁用按钮,以防止重复提交,并告知用户操作正在进行。本文将详细介绍如何利用jquery和font awesome实现一个可复用的加载按钮功能。

1. 核心加载函数 toggleLoader

我们首先定义一个核心的JavaScript函数 toggleLoader,它负责控制按钮的加载状态。这个函数接受一个布尔值参数 show,根据其值来显示或隐藏加载图标并启用/禁用按钮。

/** * 切换按钮的加载状态。 * @param {boolean} show - true 表示显示加载动画并禁用按钮,false 表示隐藏加载动画并启用按钮。 */const toggleLoader = show => {  // 选取所有具有 .btn-sabt 类的按钮  $('.btn-sabt')    .prop('disabled', show) // 根据 show 的值禁用或启用按钮    .find('i')             // 查找按钮内部的  标签(加载图标)    .toggleClass('hide', !show); // 根据 show 的值切换 'hide' 类来显示或隐藏图标};

函数解析:

$(‘.btn-sabt’):使用jQuery选择器选中页面上所有类名为 btn-sabt 的按钮。.prop(‘disabled’, show):prop() 方法用于设置或获取元素的属性。当 show 为 true 时,按钮的 disabled 属性被设置为 true,按钮被禁用;当 show 为 false 时,disabled 属性被设置为 false,按钮被启用。.find(‘i’):在选中的按钮内部查找 标签,这个标签将用于显示加载图标。.toggleClass(‘hide’, !show):toggleClass() 方法根据第二个参数的布尔值来添加或移除类。当 show 为 true 时(表示显示加载),!show 为 false,hide 类被移除,图标显示。当 show 为 false 时(表示隐藏加载),!show 为 true,hide 类被添加,图标隐藏。

2. HTML 结构准备

为了使 toggleLoader 函数生效,我们的提交按钮需要包含一个用于显示加载动画的 标签。我们使用 Font Awesome 图标库来提供加载图标。

  

HTML 结构解析:

依赖引入: 引入 jQuery 库和 Font Awesome CSS。按钮元素: 加载图标: 是 Font Awesome 的旋转刷新图标。fa fa-refresh:指定刷新图标。fa-spin:使图标旋转,形成加载动画效果。hide:初始状态下,加载图标是隐藏的。 这个 hide 类将在 CSS 中定义。

3. CSS 样式定义

我们需要一个简单的 CSS 规则来控制 hide 类的显示/隐藏。

.hide {  display: none !important;}

CSS 解析:

当元素应用了 hide 类时,display: none !important; 会强制其不显示。!important 确保这个规则的优先级最高,避免被其他样式覆盖。

4. JavaScript 事件处理

现在,我们将 toggleLoader 函数与表单的提交事件关联起来。

$(function() {  // 当 DOM 完全加载后执行  $('#MobileUserForm').on('submit', (event) => {    event.preventDefault(); // 阻止表单的默认提交行为    toggleLoader(true);  // 显示加载动画并禁用按钮    // 在此处执行实际的表单提交或异步操作    // 例如:通过 AJAX 发送数据到服务器    // 模拟一个异步操作(例如 AJAX 请求),持续 3 秒    // 在实际应用中,请移除 setTimeout,并在异步操作完成后调用 toggleLoader(false)    setTimeout(() => {      toggleLoader(false); // 隐藏加载动画并启用按钮      alert('表单提交模拟完成!'); // 仅作演示      // 可以在此处执行表单成功提交后的逻辑,例如重定向或更新UI    }, 3000);  });});

事件处理解析:

$(function() { … });:这是 jQuery 的简写形式,确保在 DOM 加载完成后执行代码。$(‘#MobileUserForm’).on(‘submit’, (event) => { … });:为 ID 为 MobileUserForm 的表单绑定 submit 事件监听器。当表单被提交时,回调函数会执行。event.preventDefault();:这是关键一步,它阻止了浏览器默认的表单提交行为(例如页面刷新),允许我们通过 JavaScript 控制提交过程。toggleLoader(true);:在表单处理开始时调用,显示加载图标并禁用按钮。异步操作: 注释部分是您实际进行数据提交(如 AJAX 请求)的地方。这是一个异步过程。setTimeout(() => { … }, 3000);:这是一个模拟异步操作的示例。在实际应用中,您应该将 toggleLoader(false); 放在您的 AJAX 请求的 success 或 complete 回调函数中。toggleLoader(false);:在异步操作完成后调用,隐藏加载图标并重新启用按钮。

5. 注意事项与通用性扩展

异步操作: 表单提交通常涉及网络请求,这是一个异步过程。务必在异步请求(如 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为表单提交按钮添加加载状态的通用函数实现的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1528365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JavaScript 递归计数:深度解析嵌套对象和数组的统计方法
上一篇 2025年12月20日 20:13:04
JavaScript 中显示多维数组中一维数组的变量名
下一篇 2025年12月20日 20:13:17

相关推荐

  • qq浏览器出现“aw, snap!”崩溃页面怎么办_qq浏览器崩溃错误修复方案

    1、使用QQ浏览器内置的一键修复工具可自动解决页面崩溃问题;2、清除全部时间范围的缓存与Cookie数据以排除文件冲突;3、关闭所有扩展并结束高耗能后台程序释放内存;4、重置浏览器设置恢复默认配置,排除错误参数影响。 如果您在使用QQ浏览器时遇到“Aw, Snap!”错误,导致网页无法正常加载并显示…

    2026年9月3日
    000
  • 告别繁琐的双因素认证:Hydrat-Agency/laravel-2fa 的高效应用

    在为公司内部系统开发用户登录模块时,我需要集成双因素认证来增强安全性。一开始,我尝试自行实现,却发现需要处理大量的细节,包括数据库迁移、通知机制、以及各种复杂的逻辑判断,例如根据用户登录设备和ip地址来决定是否跳过2fa。这不仅耗时费力,而且代码的可维护性也令人担忧。 幸运的是,我发现了 Hydra…

    用户投稿 2026年9月3日
    000
  • 如何有效清除import()动态导入的JS模块缓存?

    动态导入JS模块及缓存清除策略 使用JavaScript的import()函数动态导入模块时,浏览器默认启用缓存机制。这在需要频繁更新模块内容的场景下可能导致问题。本文探讨有效清除import()导入JS模块缓存的方法,并分析常见问题。 核心问题在于如何避免import()动态导入JS脚本时缓存的影…

    2026年9月3日
    000
  • 原生小程序开发:如何实现元素平滑上移并消失的动画效果?

    原生小程序开发中,如何流畅地实现元素平滑上移并消失的动画效果?本文将提供一种解决方案,有效避免动画不连贯的问题,尤其适用于实时更新的场景,例如聊天信息滚动显示。 许多开发者在小程序开发中会遇到动画效果不流畅的问题,特别是元素动态更新和移除时。 这通常是因为元素的移除和新元素的添加存在时间差,造成视觉…

    2026年9月3日
    000
  • VSCode特效插件怎么设置_VSCode安装和配置界面动效与视觉增强插件教程

    答案:安装Power Mode、Custom CSS等插件可实现VSCode界面动效与视觉增强,通过扩展商店搜索、安装并配置settings.json文件,结合性能优化与实用性选择,提升编码体验。 VSCode的界面动效与视觉增强插件,本质上是通过安装特定的扩展程序来实现的。这就像给你的开发环境加了…

    2026年9月3日
    200
  • HTML2Canvas生成PDF打印慢怎么办?

    优化HTML2Canvas PDF打印性能:告别耗时难题 项目中使用HTML2Canvas生成PDF打印预览时,常常面临性能瓶颈:网页内容复杂、图片数量增多,都会导致转换时间大幅增加,严重影响用户体验。本文将分析问题根源并提供有效的优化策略。 原方案采用HTML渲染、HTML2Canvas转换为Ca…

    2026年9月3日
    400
  • 内网环境下,如何不经浏览器配置,通过HTTP协议集成高拍仪到网站项目?

    如何在内网网站项目中无浏览器配置地集成高拍仪? 许多内网应用需要与本地硬件,例如高拍仪,进行交互。本文介绍一种在内网部署的网站项目,如何通过HTTP协议,无需HTTPS或浏览器额外配置,访问本地高拍仪的方法。 项目背景:内网部署,使用IP地址访问,采用现代浏览器(非IE)和HTTP协议。 navig…

    2026年9月3日
    100
  • win11无法安全删除USB大容量存储设备怎么办_U盘无法弹出问题解决方法

    当U盘提示“设备正在使用中”时,可通过关闭占用程序、重启资源管理器、使用diskpart命令脱机、更改删除策略、事件查看器排查或设备管理器卸载设备来解决。 如果您尝试通过系统托盘图标或“此电脑”窗口安全弹出U盘时,系统提示“设备正在使用中”,则可能是由于后台程序、服务或系统进程占用了该设备。以下是解…

    2026年9月3日
    300
  • 168.31.1小米路由器无线网络配置教程

    小米路由器无线网络配置很简单,先通电并用网线连接电脑和路由器lan口;2. 打开浏览器输入192.168.31.1进入管理界面,若无法访问可检查ip设置或重置路由器;3. 根据宽带类型选择上网方式:自动获得ip地址(dhcp)、pppoe拨号(需输入账号密码)或静态ip(手动填写运营商提供的信息);…

    2026年9月3日
    100
  • win11玩游戏画面撕裂怎么办_Win11游戏画面撕裂问题的解决方案

    首先启用显卡同步技术,如NVIDIA的G-Sync或AMD的FreeSync,并开启垂直同步;接着关闭游戏程序的全屏优化功能以提升兼容性;同时可禁用浏览器硬件加速以防云游戏撕裂;确保显卡驱动为最新版本,必要时回滚至稳定版;最后在游戏内限制帧率略低于显示器刷新率,优先使用自适应垂直同步与无边框窗口模式…

    2026年9月3日
    300
  • 电脑重新做系统后原来的软件怎么恢复

    一、准备工作 在开始恢复原有软件之前,需要提前准备好一些必要的工具。首先,务必备份好个人的重要文件和资料,防止数据丢失。其次,准备一个可用的系统安装盘或U盘,以便进行系统重装。此外,保持网络连接稳定也很重要,这样可以方便后续下载和安装软件。 二、具体操作 1. 重新下载并安装 大多数软件都可以通过官…

    2026年9月3日
    300
  • 123网盘如何批量删除文件_123网盘批量删除文件操作教程

    123网盘暂无官方批量删除功能,但可通过网页端按住Ctrl或Command键多选文件后删除,或通过回收站清空多个文件;移动端仅支持单个删除,建议使用电脑操作,并注意定期清理回收站以节省空间。 123网盘目前未提供官方的“批量删除”功能入口,但用户仍可通过一些操作技巧实现多文件的快速删除。以下是具体的…

    2026年9月3日
    200
  • 原生小程序开发:如何流畅实现元素逐渐上移消失的动画效果?

    在原生小程序开发中,如何优雅地实现元素逐渐上移并消失的动画效果?这在处理动态数据流(例如聊天信息或实时更新列表)时尤为重要。本文提供一种高效、流畅的解决方案,避免动画间的相互干扰。 许多开发者在实现元素上移动画时,会遇到动画不连贯的问题。这是因为新元素渲染时,之前的动画可能未完成,导致冲突。解决方法…

    2026年9月3日
    400
  • 123云盘Mac版怎么安装_123云盘Mac版安装指南

    首先确认安装包来源并调整系统权限,从官网下载123云盘Mac版.dmg文件,遇安全提示时前往“隐私与安全性”设置点击“仍要打开”,随后挂载安装包并将应用拖入“应用程序”文件夹,最后启动应用完成登录与初始化配置。 如果您尝试在Mac设备上安装123云盘,但无法正常完成安装过程,则可能是由于系统权限设置…

    2026年9月3日
    200
  • vivo浏览器缓存的视频在哪 vivo浏览器缓存的视频如何提取

    vivo浏览器缓存的视频在哪 vivo浏览器缓存的视频如何提取vivo浏览器缓存的视频在哪 vivo浏览器缓存的视频如何提取vivo浏览器缓存的视频在哪 vivo浏览器缓存的视频如何提取vivo浏览器缓存的视频在哪 vivo浏览器缓存的视频如何提取

    相信很多朋友也碰到过类似的情况,那么对于vivo浏览器缓存的视频怎么导出呢?下面为大家介绍一种实用的方法,希望对大家有所帮助。 打开vivo手机中的【文件管理】应用。 在首页中选择并点击【视频】分类。 选中需要导出的视频,然后通过【长按】操作进行选中。 点击界面右下角的【更多】按钮,弹出操作菜单。 …

    2026年9月3日 用户投稿
    100
  • VSCode怎么写CSS文件_VSCode编写和预览CSS样式表详细教程

    VSCode怎么写CSS文件_VSCode编写和预览CSS样式表详细教程VSCode怎么写CSS文件_VSCode编写和预览CSS样式表详细教程VSCode怎么写CSS文件_VSCode编写和预览CSS样式表详细教程VSCode怎么写CSS文件_VSCode编写和预览CSS样式表详细教程

    首先新建.css文件并编写样式,通过链接HTML或使用Live Server插件实时预览;推荐使用CSS Peek、IntelliSense、Prettier等插件提升效率;调试可借助浏览器开发者工具,大型项目建议采用Sass、BEM命名和模块化管理。 VSCode编写CSS文件,简单来说,就是新建…

    2026年9月3日 用户投稿
    300
  • mac使用命令安装软件

    mac使用命令安装软件mac使用命令安装软件mac使用命令安装软件mac使用命令安装软件

    答案:Homebrew是macOS上高效管理命令行工具和图形应用的包管理器,通过简单命令实现软件安装、更新与卸载,支持依赖处理和Cask图形应用安装,安全可靠且可与其他语言包管理器协同使用。 在macOS上,想要通过命令来安装软件,最核心且效率最高的方式就是借助一个叫做Homebrew的包管理器。它…

    2026年9月3日 用户投稿
    300
  • OpenVidu实时视频通话:如何优雅地处理客户端缺少摄像头或麦克风?

    OpenVidu实时视频通话中,如何应对客户端缺少摄像头或麦克风的场景? 许多开发者在使用openvidu-call-react构建视频会议应用时,常常面临一个挑战:当用户设备缺乏摄像头或麦克风时,应用可能崩溃或报错。仅仅将publishAudio和publishVideo设为false并不能解决根…

    2026年9月3日
    400
  • win11怎么使用性能监视器_Win11性能监视器使用详解

    首先打开性能监视器(perfmon)生成系统性能报告,再通过任务管理器查看实时资源占用,并可启用游戏栏叠加层监控CPU、内存、GPU等指标。 如果您需要对Windows 11系统的运行状况进行深度分析,以排查性能瓶颈或资源占用异常问题,可以利用系统内置的性能监视器工具获取详尽的数据报告。以下是具体的…

    2026年9月3日
    200
  • 小红书网页版免登录入口 小红书网页版免登录官网

    小红书网页版免登录入口为xiaohongshu.com/,用户可直接访问浏览推荐内容,支持搜索与瀑布流加载,未登录可查看笔记与评论,互动需登录,已登录用户可管理个人主页与创作内容,页面支持深浅色模式切换与浏览器缩放,提升浏览体验。 立即进入“☞☞☞☞☞点击小红书网页版免登录入口☜☜☜☜☜”; 立即进…

    2026年9月3日
    200

发表回复

登录后才能评论
关注微信