Javascript 停止表单提交无法正常工作

Javascript 停止表单提交无法正常工作,javascript,jquery,forms,Javascript,Jquery,Forms,可能重复: 我有一张表格: <form id="orderForm" onsubmit="return prepareOrder(this);" action='@ConfigurationManager.AppSettings["EpayLogonUrl"]' method="POST"> 当issucessequal false时提交不停止的问题。对于测试,我插入警报并正确显示警报(1),但表单仍然提交。哪里有问题?您的ajax调用返回false,但您的prepareOrde

可能重复:

我有一张表格:

<form id="orderForm" onsubmit="return prepareOrder(this);" action='@ConfigurationManager.AppSettings["EpayLogonUrl"]' method="POST">

issucess
equal false时提交不停止的问题。对于测试,我插入警报并正确显示警报(1),但表单仍然提交。哪里有问题?

您的ajax调用返回false,但您的
prepareOrder
方法没有返回false。 尝试在ajax调用之外返回false:

function prepareOrder(form) {
    $('.wizard_next_step').attr('disabled', 'disabled');
    $('.wizard_next_step').addClass('disabled');
    $('.wizard_prev_step').attr('disabled', 'disabled');
    $('.wizard_prev_step').addClass('disabled');       

    $.ajax({
        type: 'POST',
        url: '/Pay/CreateOrder',
        success: function (response) {
            if (response.IsSuccess) {
                alert('2');
                $("input[type=hidden][name=Signed_Order_B64]").val(response.Message);
            } else {
                alert('1');
                toastr.options.timeOut = 10000;
                toastr.info(response.Message);
                return false;
            }
        },
        error: function () {
            return false;
        },
        async: false
    });

    return false;    
}

而不是
返回false
do
returnVal=false并且,在
prepareOrder
的末尾,是否
returnVal==false?假:真
@goldenparrot-你为什么不直接做
返回值最后?@goldenparrot:你为什么要这么做?只需
返回false
@WesleyMurch-这里的想法是根据(同步)Ajax响应有条件地停止提交。(可能需要某种预先验证,尽管我不会这样编码。)@nnnnnn:我把整件事都看错了,我累了,要上床睡觉了;)祝您好运
user1260827
对于netsted函数,
return
将从内部函数返回值。@Pawan-不,它不会返回,它将返回
return
关键字后面的任何值(如果没有提供值,则返回
undefined
)。
function prepareOrder(form) {
    $('.wizard_next_step').attr('disabled', 'disabled');
    $('.wizard_next_step').addClass('disabled');
    $('.wizard_prev_step').attr('disabled', 'disabled');
    $('.wizard_prev_step').addClass('disabled');       

    $.ajax({
        type: 'POST',
        url: '/Pay/CreateOrder',
        success: function (response) {
            if (response.IsSuccess) {
                alert('2');
                $("input[type=hidden][name=Signed_Order_B64]").val(response.Message);
            } else {
                alert('1');
                toastr.options.timeOut = 10000;
                toastr.info(response.Message);
                return false;
            }
        },
        error: function () {
            return false;
        },
        async: false
    });

    return false;    
}