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 相关文章推荐
jquery插件开发注意事项小结
Jun 04 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 Javascript
JS正则表达式验证数字代码
Jan 28 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
javascript数组详解
Oct 22 Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
微信小程序 教程之注册程序
Oct 17 Javascript
Node.js开启Https的实践详解
Oct 25 Javascript
真正好用的js验证上传文件大小的简单方法
Oct 27 Javascript
Vue.js系列之项目结构说明(2)
Jan 03 Javascript
vue.js 获取select中的value实例
Mar 01 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
IE8 原生JSON支持
2009/04/13 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python tkinter组件使用详解
2019/09/16 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
python3排序的实例方法
2020/10/20 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
中专生自我鉴定范文
2014/02/02 职场文书
《菜园里》教学反思
2014/04/17 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
个人向公司借款协议书
2016/03/19 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
基于python实现银行管理系统
2021/04/20 Python
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS