新闻中心

使用 jQuery 实现可复用的按钮加载状态功能

2025-10-12
浏览次数:
返回列表

使用 jQuery 实现可复用的按钮加载状态功能

本教程将指导您如何使用 jQuery 和 Font Awesome 创建一个可复用的 J*aScript 函数,以在表单提交时为按钮显示加载动画并禁用按钮,从而提升用户体验和防止重复提交。通过此方法,您可以轻松地将加载状态功能应用于各种表单按钮,实现一致且专业的交互效果。

在网页开发中,当用户提交表单或执行耗时操作时,提供即时反馈至关重要。显示加载动画并禁用相关按钮可以有效防止用户重复提交,同时告知用户系统正在处理请求,从而显著提升用户体验。本文将详细介绍如何利用 jquery 和 font awesome 实现一个可复用的按钮加载状态功能。

1. 准备工作:引入必要的库和HTML结构

首先,确保您的页面中已引入 jQuery 库和 Font Awesome 图标库,它们是实现此功能的基础。接着,为您的提交按钮添加一个 Font Awesome 加载图标,并默认将其隐藏。

HTML 结构示例:

<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>

关键点说明:

  • :这是一个 Font Awesome 的刷新图标,fa-spin 类使其旋转,hide 类则用于初始隐藏。
  • btn-sabt:这是一个自定义类,用于 jQuery 选择器定位按钮。

2. 定义 CSS 样式

为了控制加载图标的显示与隐藏,我们需要一个简单的 CSS 类来切换 display 属性。

CSS 样式示例:

.hide {
  display: none !important; /* 使用 !important 确保覆盖其他样式 */
}

3. 创建可复用的 J*aScript 加载器函数

核心功能是一个名为 toggleLoader 的 J*aScript 函数,它负责根据传入的参数来显示或隐藏加载图标,并禁用或启用按钮。

J*aScript 代码示例:

永利在线企业网站管理系统(CMS)1.0 Build 20100612 永利在线企业网站管理系统(CMS)1.0 Build 20100612

修正说明:1,实现真正的软件开源。2,安装界面的美化3,真正实现栏目的递归无限极分类。4,后台添加幻灯片图片的管理,包括添加,修改,删除等。5,修正添加新闻的报错信息6,修正网站参数的logo上传问题7,修正产品图片的栏目无限极分类8,修正投票系统的只能单选问题9,添加生成静态页功能10,添加缓存功能特点和优势1. 基于B/S架构,通过本地电脑、局域网、互联网皆可使用,使得企业的管理与业务不受地域

永利在线企业网站管理系统(CMS)1.0 Build 20100612 0 查看详情 永利在线企业网站管理系统(CMS)1.0 Build 20100612
/**
 * 切换按钮的加载状态。
 * @param {boolean} show - 如果为 true,显示加载器并禁用按钮;如果为 false,隐藏加载器并启用按钮。
 */
const toggleLoader = show => {
  // 假设所有需要控制加载状态的按钮都带有 '.btn-sabt' 类
  $('.btn-sabt')
    // .toggleClass('submit-btn', show) // 如果需要根据状态切换其他类,可以取消注释
    .prop('disabled', show) // 禁用或启用按钮
    .find('i').toggleClass('hide', !show); // 切换加载图标的显示/隐藏
};

函数解析:

  • toggleLoader(show) 接收一个布尔值 show。
  • $('.btn-sabt'):选择所有带有 btn-sabt 类的按钮。
  • .prop('disabled', show):当 show 为 true 时,设置 disabled 属性为 true(禁用按钮);当 show 为 false 时,设置 disabled 为 false(启用按钮)。
  • .find('i').toggleClass('hide', !show):找到按钮内部的 标签(即加载图标),并根据 !show 的值来切换 hide 类。当 show 为 true 时,!show 为 false,移除 hide 类(显示图标);当 show 为 false 时,!show 为 true,添加 hide 类(隐藏图标)。

4. 将加载器集成到表单提交事件中

现在,我们将 toggleLoader 函数集成到表单的提交事件中。

J*aScript 代码示例:

$(function() {
  $('#MobileUserForm').on('submit', (event) => {
    event.preventDefault(); // 阻止表单的默认提交行为

    toggleLoader(true);  // 显示加载器并禁用按钮

    // 在此处执行您的异步任务,例如 AJAX 请求
    // 示例:模拟一个异步操作,实际应用中替换为您的 AJAX 调用
    setTimeout(() => {
      toggleLoader(false); // 任务完成后,隐藏加载器并启用按钮
      // 例如,可以在这里处理 AJAX 响应,如显示成功消息或错误信息
    }, 3000); // 模拟3秒延迟
  });
});

集成步骤说明:

  1. $(function() { ... });:确保 DOM 完全加载后再执行 J*aScript 代码。
  2. $('#MobileUserForm').on('submit', (event) => { ... });:监听 ID 为 MobileUserForm 的表单的提交事件。
  3. event.preventDefault();:这是非常重要的一步,它阻止了浏览器默认的表单提交行为(如页面刷新),以便我们能通过 J*aScript 控制提交过程。
  4. toggleLoader(true);:在异步任务开始前调用,显示加载动画并禁用按钮。
  5. setTimeout(() => { toggleLoader(false); }, 3000);:这是一个模拟异步任务的示例。在实际应用中,您应该将 toggleLoader(false); 放置在您的 AJAX 请求的 success、error 或 complete 回调函数中,确保在任务真正结束时才移除加载状态。

5. 注意事项与最佳实践

  • 异步操作的正确处理: 确保 toggleLoader(false) 在实际的异步操作(如 AJAX 请求)成功或失败后才被调用。如果您的 AJAX 请求是使用 $.ajax()、fetch 或 axios 等库,请将其放在 done()、fail() 或 finally() 回调中。
  • 用户体验: 除了加载动画,还可以考虑在加载期间添加一个半透明的遮罩层,以防止用户与页面其他部分进行不必要的交互。
  • 可复用性扩展: 当前 toggleLoader 函数硬编码了 .btn-sabt 选择器。为了更强的复用性,您可以修改函数,使其接受一个按钮元素或选择器作为参数:
    const toggleLoaderGeneric = (buttonSelector, show) => {
      $(buttonSelector)
        .prop('disabled', show)
        .find('i').toggleClass('hide', !show);
    };
    // 使用示例:
    // toggleLoaderGeneric('#MobileUserForm .btn-sabt', true);
    // toggleLoaderGeneric('#AnotherForm button[type="submit"]', false);
  • 错误处理: 在异步请求失败时,不仅要隐藏加载器,还应该向用户显示适当的错误消息。
  • 无障碍性(Accessibility): 对于屏幕阅读器用户,可以考虑在按钮禁用时添加 aria-busy="true" 或 aria-live="assertive" 等 ARIA 属性,提供更友好的体验。

总结

通过上述步骤,我们成功创建了一个简洁、可复用且专业的按钮加载状态功能。这不仅提升了用户在表单提交时的体验,也有效避免了因重复点击导致的潜在问题。通过灵活运用 jQuery 和 Font Awesome,您可以轻松地将此模式应用于您网站的各种交互场景中。

以上就是使用 jQuery 实现可复用的按钮加载状态功能的详细内容,更多请关注其它相关文章!


# 回调  # 遵义百度网站推广  # 云浮推广渠道优化营销  # 阜沙品牌网站建设  # 抖音SEO结案报告  # 新增网站推广验证失败  # 精量智能seo  # 5年网站SEO优化价格  # seo分析皮肤推荐网站  # 如何分析网站关键词排名  # 响应网站可以推广吗  # 选择器  # 这是一个  # 您可以  # 企业网站  # 管理系统  # css  # 复用  # 表单  # 您的  # 加载  # a  # 回调函数  # access  # 浏览器  # 编码  # ajax  # js  # html  # jquery  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案  Win11怎么修改默认浏览器_Windows 11设置Chrome为默认  AO3最新镜像入口 Archive of Our Own官方平台访问  composer的"require-dev"部分是用来做什么的?  4399体育竞技小游戏_4399小游戏赛事入口  微信语音通话掉线如何解决 微信语音通话稳定优化方法  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  J*a里如何使用forEach遍历Map_Map遍历方法说明  网易大神怎么保存别人动态的图片_网易大神动态图片保存方法  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  VS Code远程开发时如何处理文件权限问题  Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法  在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验  c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  qq音乐在线播放入口_qq音乐电脑版登录链接  微信网页版官方入口教程 微信网页版网页版快速登录步骤  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  火锅吃太多会怎样 火锅吃太多会上火吗  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  极兔快递快件信息查询系统 极兔快递官网运单号追踪  uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验  Golang如何使用net/url解析URL_Golang URL解析与处理方法  实现分段式页面滚动导航:CSS与J*aScript教程  优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率  J*aScript中高效管理与清空动态列表:避免循环陷阱  sublime怎么格式化代码_sublime代码美化与一键排版插件配置  Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略  淘宝网网页版登录入口 淘宝官方网页版快捷登录  iwriter统一登录平台 iwrite账号密码登录页面  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  拼多多赚钱渠道_拼多多收益来源  深入理解Go语言中的指针类型:以*string为例  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  解决Python logging 中 datefmt 导致时间戳固定不变的问题  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】  Steam官网入口直达 Steam注册及登录步骤  内存检查:在VS Code中调试C++时的内存视图 

搜索