gpt4 book ai didi

javascript - javascript 确认()取消后在表单提交按钮上运行 AJAX 函数

转载 作者:行者123 更新时间:2023-12-03 09:47:03 25 4
gpt4 key购买 nike

我有一个表单,其中 AJAX 函数在表单提交时运行,以确保表单中的数据不会与数据库中的数据冲突。如果发现冲突,AJAX函数会弹出一个confirm()框。如果用户单击“确定”,则提交表单。如果他们单击“取消”,则不会提交表单。

这就是事情出现问题的地方。如果他们单击取消,然后调整表单中的值并再次提交,则下次点击表单提交按钮时 AJAX 函数不会运行。有没有办法让 AJAX 函数在每次点击提交时运行,即使他们之前已经取消了表单提交?

这是 AJAX 函数的 chop 版本:

$('#publish').one('click', function (e) {
e.preventDefault();

var url = shiftajax.ajaxurl;
var shift = $('#post_ID').val();

var data = {
'action': 'wpaesm_check_for_schedule_conflicts_before_publish',
'shift': shift,
};

$.post(url, data, function (response) {
if( response.action == 'go' ) {
// submit the form
$('#post').submit();
} else {
// ask user for confirmation
if (confirm(response.message)) {
// user clicked OK - submit the form
$('#post').submit();
} else {
// user clicked cancel - do nothing
}
}
});

});

就像我说的,这工作得很好,但是如果您在点击“取消”按钮后点击提交按钮,AJAX 根本不会触发。

就其值(value)而言,当您点击 WordPress 自定义帖子类型上的“发布”按钮时,此 AJAX 函数就会运行。

最佳答案

不要使用one(它只会触发ajax提交或按钮单击一次),在这里使用var IsBusy来检查用户是否重复按下表单提交,

尝试下面的代码,

var isBusy = false; //first time, busy state is false

$('#publish').on('click', function (e) {


if(isBusy == true)
return ; //if Busy just return dont submit
else
isBusy= true; //true , tell that ajax is now busy processing a request

e.preventDefault();

var url = shiftajax.ajaxurl;
var shift = $('#post_ID').val();

var data = {
'action': 'wpaesm_check_for_schedule_conflicts_before_publish',
'shift': shift,
};

$.post(url, data, function (response) {
if( response.action == 'go' ) {
// submit the form
$('#post').submit();
} else {
// ask user for confirmation
if (confirm(response.message)) {
// user clicked OK - submit the form
$('#post').submit();
} else {
// user clicked cancel - do nothing
}
}
isBusy = false;
});

});

关于javascript - javascript 确认()取消后在表单提交按钮上运行 AJAX 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30993223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com