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扩展自写的 UI导航
Jan 13 Javascript
浅析javascript闭包 实例分析
Dec 25 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
学好js,这些js函数概念一定要知道【推荐】
Jan 19 Javascript
angularjs实现天气预报功能
Jun 16 Javascript
浅谈Vue.js组件(二)
Apr 09 Javascript
Vue函数式组件的应用实例详解
Aug 30 Javascript
vue+element tabs选项卡分页效果
Jun 29 Javascript
Vue 实现从小到大的横向滑动效果详解
Oct 16 Javascript
JavaScript对象原型链原理详解
Feb 05 Javascript
vue或react项目生产环境去掉console.log的操作
Sep 02 Javascript
JavaScript实现班级抽签小程序
May 19 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
漂亮但不安全的CTB
2006/10/09 PHP
PHP安全配置
2006/12/06 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
php实现读取超大文件的方法
2014/07/28 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
锐步英国官网:Reebok英国
2019/11/29 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
应急管理培训方案
2014/06/12 职场文书
九寨沟导游词
2015/02/02 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书