我有一个表单,用于检查表单提交前的ifsc代码,如果给出错误的ifsc,则api返回“失败”。如果响应失败,则不应提交表单。我使用了e.preventDefault(e)
,但没有帮助。
$('#corporate-signup').on('submit',function(e){
var ifsc_code = $('#ifsc-code').val();
var api_url = 'http://api.techm.co.in/api/v1/ifsc/'+ifsc_code;
$.get(api_url, function(data, status){
if (data.status === "failure") {
$('.bank-details').addClass('no-ifsc').text(data.message);
e.preventDefault(e);
}
else{
$('#corporate-signup').submit()
}
});
});
我不知道这里的错误是什么。我也试过return false
而不是preventDefault()
,但即使它没有用。
答案 0 :(得分:2)
我认为,因为你使用异步函数并且不返回false,所以它会在等待答案之前继续提交 - 它不知道等待回调。
由于您在异步回调中手动提交,请尝试在e.preventDefault(e);
之后添加$.get
:
var shouldSubmit = false;
$('#corporate-signup').on('submit',function(e){
if (!shouldSubmit) {
// First time entering, this won't submit due to line below
e.preventDefault(e);
var ifsc_code = $('#ifsc-code').val();
var api_url = 'http://api.techm.co.in/api/v1/ifsc/'+ifsc_code;
$.get(api_url, function(data, status){
if (data.status === "failure") {
$('.bank-details').addClass('no-ifsc').text(data.message);
}
else{
shouldSubmit = true;
$('#corporate-signup').submit()
}
});
}
});
编辑添加了shouldSubmit
布尔值,因为否则会继续点击e.preventDefault(e)
并且永远不会提交。根据异步请求获得成功后,您可以将其设置为true并重新提交。
答案 1 :(得分:0)
试试这个
$('#corporate-signup').on('submit',function(e){
e.preventDefault();
var ifsc_code = $('#ifsc-code').val();
var api_url = 'http://api.techm.co.in/api/v1/ifsc/'+ifsc_code;
$.get(api_url, function(data, status){
if (data.status === "failure") {
$('.bank-details').addClass('no-ifsc').text(data.message);
}
else{
$('#corporate-signup')[0].submit() // bypass jQuery bound event
}
});
});