我可以使用preventDefault(); 在ajax回调中?

我正在做一些表单validation,而我正在努力完成我正在努力完成的任务。 我希望能够在字段模糊时validation我的邮政编码,但也可以调用相同的函数来validation表单提交时的zip,并防止在邮政编码无效时提交表单。 我的代码(一般来说)就是这样的。

function validateZipCode(event){ $.getJson( url, params, function(data){ if(data.response === false){ someError.show(); event.preventDefault(); //stop the form from being submitted } } ); } $('#someForm').submit(function(event){ validateZipCode(event); }); $('#zipInput').blur(function(event){ validateZipCode(event); }) 

我已经尝试使用这个jQuery中的方法将更多参数传递给回调post,但我似乎仍然无法完成我需要的东西。 任何帮助表示赞赏。

不,当AJAX事件的回调触发时,事件将已经冒泡并且表单已提交。 您可以实现此目的的一种方法是从提交中取消表单,然后如果它从AJAX请求传递要求,则手动提交。

您需要在事件冒泡并由浏览器处理之前阻止事件的默认操作。 $ .getJson返回控件并允许validateZipCode函数首先完成,因此您需要执行以下操作:

 function validateZipCode(event){ event.preventDefault(); //stop the form from being submitted $.getJson( url, params, function(data){ if(data.response === false){ someError.show(); } } ); } $('#someForm').submit(function(event){ validateZipCode(event); }); $('#zipInput').blur(function(event){ validateZipCode(event); }) 

不,如果不使用ajax()方法并将async设置为false,则无法从ajax请求返回任何内容。

更好的想法是始终优先提交您的提交,然后在ajax回调中手动提交表单。