jquery中调用模态框手动显示函数modal('show')失效,然后曲线救了

写了一个html页面,本地访问服务端地址,本地数据读取显示渲染等操作都已经OK了,然后开心的发给后台同事,让他们合入一下。然后后台同事通过比较工具合入了,然后激动的测试一下,就发现有一个关于删除的模态框出不来拉。真是脑壳疼啊。然后开始检查,发现并不是后台的问题,而是html页面中的modal(‘show’)这一句执行的不起作用。百度了很久很久吧,始终没用找到解决方案。然后实在没办法了,想了另一个方法,曲线救国一下吧。

需求是这样的,有一个删除按钮。下方一个table,点击删除之前,有两种情况。A:用户没用选择,所以点击删除时弹出提示框,要用户至少选择一个;B:用户选择了,弹出给用户确认是否删除的提示框。之前做法是在btn的click事件中通过对checkBox的选择情况判断,再来决定手动显示哪一个modal。代码如下

本地webstore调试ok的代码,是两个modal。

<div class="modal fade" id="delSpellNoSelect" tabindex="-1" role="dialog" aria-labelledby="spellNoSelect" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h5 class="modal-title" id="spellNoSelect">提示</h5>
                </div>
                <div class="modal-body">请至少选择一条咒语!<br></div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" class="btn btn-primary" data-dismiss="modal">确定</button>
                </div>
            </div>
        </div>
    </div>
    <div class="modal fade" id="confirmDelSpell" tabindex="-1" role="dialog" aria-labelledby="delSpellInfo" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h5 class="modal-title" id="delSpellInfo">提示</h5>
                </div>
                <div class="modal-body" id="confirmDelSpellBodyContent">确认删除此咒语?<br></div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" id="btnConfirmDelSpell" class="btn btn-primary" data-dismiss="modal">确定</button>
                </div>
            </div>
        </div>
    </div>

再看js中btn的click事件,判断checkLength的值手动显示弹出不同的modal。

jQuery(document).ready(function($) {
   $("#btnDelSpell").click(function () {
    var checkLength = $("input:checkbox[name='ckb']:checked").length;
    if(checkLength == 0) {
        $('#delSpellNoSelect').modal('show');
        return;
    }
    $("#confirmDelSpell").modal('show');
   });
});

这种方式就是给了后台那边,就是显示不出来modal。后台那边采用的lua脚本语言。所以就决定换一种方案了。

修改后html代码,只留一个modal了,然后body部分增加了一个id:id="confirmDelSpellBodyContent"用来更改text的。

<div class="modal fade" id="confirmDelSpell" tabindex="-1" role="dialog" aria-labelledby="delSpellInfo" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h5 class="modal-title" id="delSpellInfo">提示</h5>
                </div>
                <div class="modal-body" id="confirmDelSpellBodyContent">确认删除此咒语?<br></div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" id="btnConfirmDelSpell" class="btn btn-primary" data-dismiss="modal">确定</button>
                </div>
            </div>
        </div>
    </div>

再看js代码:

$("#confirmDelSpell").on('show.bs.modal', function (event) {
      checkLength = $("input:checkbox[name='ckb']:checked").length;
      if(checkLength == 0) {
           $("#confirmDelSpellBodyContent").text("请至少选择一条数据!");
      } else {
           $("#confirmDelSpellBodyContent").text("确认删除此数据?");
      }
});
$("#btnConfirmDelSpell").click(function () {
   //删除功能的代码逻辑
   if(checkLength == 0) {
      return;
   }
});

而btn按钮要添加几个属性了:

aria-hidden="true" data-toggle="modal" data-target="#confirmDelSpell"
<div class="form-actions form-group button-margin-left">
    <button type="button" id="btnDelSpell" class="btn btn-primary btn-sm" aria-hidden="true" data-toggle="modal" data-target="#confirmDelSpell">删除</button>
    </div>

这样再到后台那边调试就ok了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery可以通过使用modal插件来实现框。框是一种可以覆盖在网页上的弹出窗口,常用于展示重要信息、提醒用户行为或进行用户交互。 首先,我们需要在HTML引入jQuery库和modal插件的JavaScript文件。 然后,我们可以使用以下代码实现一个简单的框: 1. HTML代码: ``` <button id="openModal">打开框</button> <div id="myModal" class="modal"> <div class="modal-content"> <span class="close">×</span> <p>这是一个框</p> </div> </div> ``` 2. CSS代码: ``` .modal { display: none; position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.4); } .modal-content { background-color: #fefefe; margin: 15% auto; padding: 20px; border: 1px solid #888; width: 80%; } .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; } .close:hover, .close:focus { color: black; text-decoration: none; cursor: pointer; } ``` 3. JavaScript代码: ``` $(document).ready(function(){ $("#openModal").click(function(){ $("#myModal").css("display", "block"); }); $(".close").click(function(){ $("#myModal").css("display", "none"); }); }); ``` 这里的代码简单解释如下: - 当点击id为"openModal"的按钮时,设置id为"myModal"的框的"display"属性为"block",即显示框。 - 当点击class为"close"的元素时,设置id为"myModal"的框的"display"属性为"none",即隐藏框。 通过这种方式,我们可以使用jQuery来实现一个简单的框。当然,我们也可以根据需求对框进行样式和功能的定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值