Javascript 使用jQuery,如何在触发表单提交事件之前等待onChange事件完成

Javascript 使用jQuery,如何在触发表单提交事件之前等待onChange事件完成,javascript,jquery,Javascript,Jquery,假设我的网页中有一个文本框,我使用jQuery在这个文本框上附加了一个“更改”事件 $('.myFormClass').on('change', '.amount', function () { // Some AJAX call here, and the response is assigned to a variable }); 我还有一个表单提交活动 $('.myFormClass').on('submit', 'form', function (e)

假设我的网页中有一个文本框,我使用jQuery在这个文本框上附加了一个“更改”事件

$('.myFormClass').on('change', '.amount', function () {            
    // Some AJAX call here, and the response is assigned to a variable
});
我还有一个表单提交活动

$('.myFormClass').on('submit', 'form', function (e) {
  // some code in which I use the response from the earlier AJAX call returned against 'change' event
});
问题是,“更改”事件单独运行良好,但当表单提交时,它们几乎同时被触发,直到针对“更改”事件的AJAX调用返回(应该是)时,表单已经提交,因此我不能使用AJAX响应,这是表单提交之前所需要的


对于这种情况,jQuery中有内置的东西吗?如果没有,是否有其他有效的解决方案?

添加一个按钮。当用户单击按钮时,布尔值被设置为tru,如果为真,则只会发生提交,否则仅onchange函数将起作用,而不是submit函数

var sub=false;
$(文档).ready(函数(){
$('button')。单击(function(){sub=true;console.log(sub)})
$('.myFormClass').on('change','.amount',函数(){
//这里有一些AJAX调用,响应被分配给一个变量
console.log('changed')
});
$('.myFormClass').keypress((e)=>{if(e.keyCode=='13'){e.preventDefault();console.log('notsubmittedonenter')})
$('.myFormClass')。单击(函数(e){
e、 预防默认值();
控制台日志(“提交已取消”)
如有(附属)
$(this.submit();
//在一些代码中,我使用了针对“change”事件返回的早期AJAX调用的响应
});
})

aa
要提交表单吗?
您可以使用:

function method1(){
   // some code

}

function method2(){
   // some code
}

$.ajax({
   url:method1(),
   success:function(){
   method2();
}
})
或在函数完成后使用嵌套函数:

功能测试(){
console.log('test');
}
函数test2(回调){
log('test2');
回调();
}

test2(test)存储ajax承诺,并在表单提交处理程序中等待其解决

让amonready=null;
$('.testForm').on('change','amount',函数(ev){
amonready=$.ajax({
方法:“POST”,
网址:'https://httpbin.org/post',
数据:{
金额:$(此).val()
}
});
});
$('.testForm')。关于('submit','form',function(e){
e、 预防默认值();
如果(!amonready)返回;
amonready.then((amonready结果)=>{
log('submitnow',amountaXresult.form.amount);
});
});

提交

在第一次
ajax
调用
成功中注册
.submit()
方法function@VasuKuncham您的建议在我的情况下无效,因为我不想在每次
onChange
事件上提交表单,而是当用户打算使用常规方法实际提交表单时。
Uncaught SyntaxError:Unexpected token(
因为我没有创建ajax调用。它只是声明在ajax成功后必须调用submit。很抱歉,我的意见是,此解决方案不起作用,因为我不想在每次
onChange
事件中提交表单,而不是当用户打算使用常规方法实际提交表单时。@AshayMandwarya您的编辑当通过ENTER键提交表格时,我将不工作。我也会在您的第一个解决方案中这样做。您的答案不符合上下文。请重新检查问题。我不确定您对我的答案有什么问题,但您明确说明:“问题是,‘更改’事件单独运行良好,但当表单提交时,它们几乎同时被触发,直到针对‘更改’事件的AJAX调用返回(应该是)时,表单已经提交,因此我不能使用AJAX响应,这是表单提交之前需要的。“只需使用nested来确保它们得到了处理,然后就可以得到响应。