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
doreturnVal=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;
}