Bootstrap 模态框多次显示后台提交多次BUG的解决方法


Posted in Javascript onDecember 26, 2017

模态框

Bootstrap 的模态框使用Bootstrap 的前端应该都接触过。

本文记录一下今天使用时遇到的 BUG,以便以后查阅和帮助其他遇到同样问题的伙伴们。

BUG 情景

使用场景

触发展现模态框,填写对应的信息,然后 ajax 提交表单信息到后台。

简化

点击下面的按钮一次,弹出模态框。点击提交,会直接 alert("提交") 。点击一次会觉得很正常,但是如果你重复点几次模态框,会发现再次点击 提交 ,alert 会出现多次。

简书无法展现效果,可参见

代码如下:

<button class="btn btn-info" id="modal-click-error">点击弹出模态框</button>

<div class="modal" tabindex="-1" role="dialog" id="myModal">
 <div class="modal-dialog" role="document">
 <div class="modal-content">
  <div class="modal-header">
  <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
  <h4 class="modal-title">Modal title</h4>
  </div>
  <div class="modal-body">
  <p>One fine body…</p>
  </div>
  <div class="modal-footer">
  <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  <button type="button" class="btn btn-primary">提交</button>
  </div>
 </div><!-- /.modal-content -->
 </div><!-- /.modal-dialog -->
</div><!-- /.modal -->
$(function() {

 $('#modal-click-error').on('click', function() {
  $('#myModal').modal('show');
  
  $("#myModal .btn-primary").on('click', function() {
   alert("提交");
  });
 });
 
});

问题修复

上述的 js 代码,每次对于按钮的点击都会为提交按钮添加对应事件。修改如下即可:

$(function() {

 $('#modal-click-error').on('click', function() {
  $('#myModal').modal('show');
 });
 
 $("#myModal .btn-primary").on('click', function() {
  alert("提交");
 });
 
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用onbeforeunload属性后的副作用
Mar 08 Javascript
jQuery之按钮组件的深入解析
Jun 19 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
Apr 14 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
微信小程序 触控事件详细介绍
Oct 17 Javascript
H5上传本地图片并预览功能
May 08 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
微信小程序点击列表跳转到对应详情页过程解析
Sep 26 Javascript
细说webpack源码之compile流程-入口函数run
Dec 26 #Javascript
Vue 进入/离开动画效果
Dec 26 #Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 #Javascript
Angular实现可删除并计算总金额的购物车功能示例
Dec 26 #Javascript
浅谈React深度编程之受控组件与非受控组件
Dec 26 #Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
Dec 25 #Javascript
vue的一个分页组件的示例代码
Dec 25 #Javascript
You might like
thinkphp如何获取客户端IP
2015/11/03 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
AngularJS内置指令
2015/02/04 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python随机生成彩票号码的方法
2015/03/05 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python实现拼图小游戏
2020/02/22 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
解决c++调用python中文乱码问题
2020/07/29 Python
python中二分查找法的实现方法
2020/12/06 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
高中的职业生涯规划书
2013/12/28 职场文书
承认错误的检讨书
2014/01/30 职场文书
大学三年计划书范文
2014/04/30 职场文书
社会学专业求职信
2014/07/17 职场文书
2015年教务工作总结
2015/05/23 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers