jQuery 中 submit() 事件的事件委托
Event delegation for submit() event in jQuery
我的 jQuery 代码中有这个:
$(this).parents('form').submit();
问题是第一次它在没有重新加载页面的情况下工作,但是从我第二次调用它开始,页面就重新加载了。我正在阅读 Why does Ajax work correctly on first request, but returns partial view on new page on second request?,上面写着:
"works first time only" behaviour is typical of a situation where the content is being added dynamically, but the events were bound directly to elements (e.g. at DOM ready).
我试图做这样的事情来为表单 submit()
事件使用事件委托:
$(document).on('submit', 'form', function(){
// Something here?
});
但我不确定在 function()
中放什么已经用 $(this).parents('form').submit();
实现了第一次。有什么想法吗?
更新 1:
这是 select 框的触发器(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('');
}
}
});
当我更改值以从 select 框中选择一个操作时,我收到此消息:Are you sure you want to do this action?
第一次使用 AJAX 完成所有操作(提交表单) .但是从第二次开始,它可以正常工作,但会重新加载页面。它应该总是用 AJAX 来完成而不重新加载页面,不仅仅是第一次。这是专门为提交表单而执行的行:
$(this).parents('form').submit();
我试图理解为什么同一行,它第一次与 AJAX 一起工作,但从第二次开始它重新加载页面。
我必须在第一次加载时以其他方式模拟 AJAX 行为,因为我使用的是 $(this).parents('form').submit();
并且正如 Teemu 在对问题的评论中所说,那不是 AJAX.
我的 jQuery 代码中有这个:
$(this).parents('form').submit();
问题是第一次它在没有重新加载页面的情况下工作,但是从我第二次调用它开始,页面就重新加载了。我正在阅读 Why does Ajax work correctly on first request, but returns partial view on new page on second request?,上面写着:
"works first time only" behaviour is typical of a situation where the content is being added dynamically, but the events were bound directly to elements (e.g. at DOM ready).
我试图做这样的事情来为表单 submit()
事件使用事件委托:
$(document).on('submit', 'form', function(){
// Something here?
});
但我不确定在 function()
中放什么已经用 $(this).parents('form').submit();
实现了第一次。有什么想法吗?
更新 1:
这是 select 框的触发器(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('');
}
}
});
当我更改值以从 select 框中选择一个操作时,我收到此消息:Are you sure you want to do this action?
第一次使用 AJAX 完成所有操作(提交表单) .但是从第二次开始,它可以正常工作,但会重新加载页面。它应该总是用 AJAX 来完成而不重新加载页面,不仅仅是第一次。这是专门为提交表单而执行的行:
$(this).parents('form').submit();
我试图理解为什么同一行,它第一次与 AJAX 一起工作,但从第二次开始它重新加载页面。
我必须在第一次加载时以其他方式模拟 AJAX 行为,因为我使用的是 $(this).parents('form').submit();
并且正如 Teemu 在对问题的评论中所说,那不是 AJAX.