首页 > 解决方案 > jQuery 中 submit() 事件的事件委托

问题描述

我的 jQuery 代码中有这个:

$(this).parents('form').submit();

问题是它第一次工作时没有重新加载页面,但从我第二次调用它开始,页面被重新加载。我在阅读为什么 Ajax 在第一次请求时可以正常工作,但在第二次请求时返回新页面上的部分视图?它说:

“仅在第一次工作”行为是动态添加内容但事件直接绑定到元素(例如,在 DOM 就绪时)的典型情况。

我试图做这样的事情来为表单submit()事件使用事件委托:

$(document).on('submit', 'form', function(){
    // Something here?
});

但我不知道该放什么function(),因为我只需要提交表单但使用 AJAX 以便页面不会重新加载,这几乎是我第一次使用$(this).parents('form').submit();. 有任何想法吗?

更新 1:

这是选择框的触发器(onChange事件尝试提交表单):

$(document).on('change', 'form select.js-admin-index-autosubmit', function() {
    if ($('.js-checkbox-list:checked').val() != 1 && $(this).val() >= 1) {
        alert(__l('Please select atleast one record!'));
        return false;
    } else if ($(this).val() >= 1) {
        if (window.confirm(__l('Are you sure you want to do this action?'))) {
            $(this).parents('form').submit();
        } else {
            $(this).val('');
        }
    }
});

当我更改值以从选择框中选择一个操作时,我收到此消息:Are you sure you want to do this action?它第一次使用 AJAX 执行所有操作(提交表单)。但是从第二次开始,它可以正常工作,但会重新加载页面。它应该始终使用 AJAX 而不重新加载页面,而不仅仅是第一次。这特别是为提交表单而执行的行:

$(this).parents('form').submit();

我试图理解为什么同一行,它第一次与 AJAX 一起工作,但从第二次重新加载页面开始。

标签: javascriptjqueryajaxevent-handlingjquery-events

解决方案


我必须在第一次加载时以其他方式模拟 AJAX 行为,因为我正在使用$(this).parents('form').submit();并且正如 Teemu 在对问题的评论中所说的那样,这不是 AJAX。


推荐阅读