脚本宝典收集整理的这篇文章主要介绍了JQuery动态插入Bootstrap模态框(Modal),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这里所说的动态插入,是指用JS的append()方式追加元素内容,而不是静态写在HTML里面。
为什么会用到这种方式呢?比如登录框。有些网站在大部分页面都有登录按钮,如果是用Bootstrap的模态框调用的话,常规方式都是写在HTML里面,这就不太方便后期修改,因为你一旦要修改就要动到很多个页面!
这里也不多说什么了,先看效果图:
这里用到的JQ版本是3.5.1,Bootstrap版本是4.6.1,先来看代码:
1 var loginModal = " <div class="modal fade" id="loginModal" tabindex="-1" aria-hidden="true">n"; 2 loginModal += " <div class="modal-dialog modal-dialog-centered">n"; 3 loginModal += " <div class="modal-content">n"; 4 loginModal += " <div class="modal-header">n"; 5 loginModal += " <h5 class="modal-title text-info">会员登录</h5>n"; 6 loginModal += " <button type="button" class="close" data-dismiss="modal" aria-label="关闭">n"; 7 loginModal += " <span aria-hidden="true">×</span>n"; 8 loginModal += " </button>n"; 9 loginModal += " </div>n"; 10 loginModal += " <div class="modal-body px-4">n"; 11 loginModal += " <form onsubmit="return false;">n"; 12 loginModal += " <div class="input-group mb-3">n"; 13 loginModal += " <div class="input-group-prepend">n"; 14 loginModal += " <span class="input-group-text">n"; 15 loginModal += " <i class="fas fa-mobile-alt fa-fw"></i>n"; 16 loginModal += " </span>n"; 17 loginModal += " </div>n"; 18 loginModal += " <input type="number" class="form-control" placeholder="小米运动账号" id="miPhone">n"; 19 loginModal += " </div>n"; 20 loginModal += " <div class="input-group mb-3">n"; 21 loginModal += " <div class="input-group-prepend">n"; 22 loginModal += " <span class="input-group-text">n"; 23 loginModal += " <i class="fas fa-lock fa-fw"></i>n"; 24 loginModal += " </span>n"; 25 loginModal += " </div>n"; 26 loginModal += " <input type="password" class="form-control" placeholder="小米运动密码" id="miPassword">n"; 27 loginModal += " </div>n"; 28 loginModal += " <div class="custom-control custom-switch">n"; 29 loginModal += " <input type="checkbox" class="custom-control-input" id="loginRemember">n"; 30 loginModal += " <label class="custom-control-label" for="loginRemember">记住登录信息</label>n"; 31 loginModal += " </div>n"; 32 loginModal += " <p class="text-danger text-center py-2 mb-2" id="loginTips"></p>n"; 33 loginModal += " <div class="text-center">n"; 34 loginModal += " <input class="btn btn-info" type="submit" id="loginSubmit" value="确定登录">n"; 35 loginModal += " <input class="btn btn-warning" type="button" id="loginClear" value="清除信息">n"; 36 loginModal += " </div>n"; 37 loginModal += " </form>n"; 38 loginModal += " </div>n"; 39 loginModal += " </div>n"; 40 loginModal += " </div>n"; 41 loginModal += " </div>"; 42 43 $("#loginBtn").click(function(){ 44 $("body").append(loginModal); //在body标签的最底部加入模态框代码 45 46 $('#loginModal').modal({ 47 keyboard: false, 48 backdrop: 'static' 49 }); 50 });
这样就实现了用append()方式在body标签的最底部追加登录的模态框,但是有一个问题,就是你不能一直不停的往页面里加入登录框,所以要做一些改变:
1 var loginBox = false; //先设置一个状态为false 2 $("#loginBtn, .login_btn").click(function(){ 3 if(loginBox == false){ //判断状态为false时追加 4 $("body").append(loginModal); //在body标签的最底部加入模态框代码 5 loginBox = true; //追加后设置状态为true 6 } 7 $('#loginModal').modal({ 8 keyboard: false, 9 backdrop: 'static' 10 }); 11 });
这样就解决了,然后你会遇到新的问题,就是这时候你用$("#loginSubmit").click()绑定点击事件的时候,无效~
这时候就得换一个思路了,因为登录模态框的内容是后面追加进去的,所以不能直接使用$("#loginSubmit").click()这种方式去绑定,可以用下面的方式:
1 // append()追加页面之后只能用on,提交登录信息 2 $('body').on('click','#loginSubmit',function(){ 3 var tips = $("#loginTips"); 4 tips.html(""); 5 var phone = $.trim($("#miPhone").val()); 6 var password = $.trim($("#miPassword").val()); 7 if(!/^1d{10}$/.test(phone)){ 8 tips.html("请输入正确的账号"); 9 $("#miPhone").focus(); 10 return false; 11 }else if(password.length < 6){ 12 tips.html("密码不能少于6位"); 13 $("#miPassword").focus(); 14 return false; 15 }else{ 16 $.ajax({ 17 method: 'post', 18 url: "/login", 19 dataType: "json", 20 data: {phone:phone,password:password}, 21 success: function (res) { 22 if(res.code==200){ 23 location.reload(); 24 }else{ 25 tips.html(res.msg); 26 return false; 27 } 28 }, 29 error: function (){ 30 tips.html("网络异常"); 31 return false; 32 } 33 }); 34 } 35 });
至此,就完美解决了!可以把以上代码放进一个公用的JS文件就可以在每个页面调用了~
案例网址:
以上是脚本宝典为你收集整理的JQuery动态插入Bootstrap模态框(Modal)全部内容,希望文章能够帮你解决JQuery动态插入Bootstrap模态框(Modal)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。