【发布时间】:2020-03-01 13:39:35
【问题描述】:
目前我的项目中的 jQuery 表单提交存在一些问题。
我的项目包含一个通用 jQuery 代码,可防止表单重复提交(例如,有人多次单击“提交”按钮)。
//prevent multiple form submissions
jQuery.fn.preventDoubleSubmission = function () {
$(document).on('submit', this, function (e) {
let $form = $(this);
if ($form.data('submitted') === true) {
e.preventDefault();
} else {
$form.data('submitted', true);
}
});
return this;
};
$(function () {
$('form').preventDoubleSubmission();
});
此代码包含在每个页面中 - 因此每个表单都应该受到“保护”。
对于某些特定的表单,我需要在提交之前检查一些值 - 如果缺少某些值,则显示一个确认框(例如,您确定要提交没有值 X 的表单吗?)
代码如下:
$(document).on('submit', 'form[name="article"]', function (e) {
e.preventDefault();
let form = this;
let $form = $(form);
let $category = $form.find('select#article_category'); //get category
if ($category.length && !$category.val()) { //check if category is selected
$.confirm({ //jquery confirm plugin
title: "Are you sure?",
content: "Value X is missing - continue?",
buttons: {
confirm: {
action: function () {
$form.off('submit');
form.submit();
}
}
}
});
} else {
$form.off('submit');
form.submit();
}
});
所以基本上,如果用户尝试提交表单,但缺少值 X,首先会出现一个是/否弹出窗口 - 如果值存在,表单将立即提交。
问题:
当我想提交表单时,我调用$form.off('submit'); 删除事件处理程序,然后使用form.submit(); 提交。可悲的是,这也删除了我的 preventDoubleSubmission 事件处理程序,它允许再次提交双重提交。
有没有办法解决我的问题?谢谢
【问题讨论】:
-
你能把你的html也包括进来吗?
标签: javascript jquery forms events submit