Bootstrap 3模式并不总是激活ajax代码

Bootstrap 3 modal doesnt always activate ajax code

本文关键字:激活 ajax 代码 模式 Bootstrap      更新时间:2023-09-26

我相信有一个简单的答案,我只是似乎无法解决它。

我使用引导模式从指定的url返回ajax内容。(在加载之间使用$.removeData()来删除内容)。

这个问题来自于对模态中呈现的表单中的内容运行JS。

我目前使用(简化)来自最终文件(由ajax返回):

$('#myModalLg').on('shown.bs.modal', function(e) {
    $(this).on('submit', 'form', function(ev) {
        ... event handler for form...
    });
});

编辑:以及其他事件处理程序(包括模式内的日期选择器),但此代码只加载一次,然后在重新加载整个页面之前无法再次激活

关闭代码:

$('#myModal, #myModalLg').on('hidden.bs.modal', function (e) {
    $(e.target).removeData();
    $(e.target).off('shown.bs.modal');
    $('#myModal, #myModalLg').on('shown.bs.modal', function () {
        $(this).find(':input:first')[0].focus();
    });
});

我希望每次显示#myModalLg时处理程序都会运行,然后当它关闭时,它会删除输入的内容,并每次恢复,但似乎不是这样工作的。

您从未关闭您的shown.bs.mode您查看过JQuery:中的一个事件吗

我不确定这是否会有帮助,但似乎你多次重新申报你的shown.bs.mode,你可能想把它改成一个,而不是在上

$('#myModal, #myModalLg').one('shown.bs.modal', function () {
    $(this).find(':input:first')[0].focus();
});