繁体   English   中英

javascript Confirm()取消后,在表单提交按钮上运行AJAX函数

[英]Run AJAX function on form submit button after javascript confirm() cancel

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

这就是问题所在。 如果他们单击“取消”,然后调整表单中的值并再次提交,则下次他们单击表单提交按钮时,AJAX函数将不会运行。 是否有一种方法可以使AJAX函数在每次单击提交时都运行,即使他们先前已取消了表单提交也是如此?

这是AJAX函数的截断版本:

$('#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根本不会触发。

值得一提的是,当您在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;
    });

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM