我有以下代码块:
$(document).ready(function(){
$("#form").submit(function(ev) {
ev.preventDefault();
$.ajax({
type: "POST",
url: "proxy.php",
data: postData,
success: function(data) {
window.location = "thankyou.php";
},
error:function(xhr, ajaxOptions, thrownError){
console.log(xhr.responseText);
}
});
});
$("#form").validate({
//a bunch of validation here
});
});
问题是,即使某些验证失败,这将继续使用 ajax 发布。这是为什么?我使用 ev.preventDefault() 的方式不对吗?我想要的是在我发送 POST 之前验证表单,如果某些验证失败然后取消,我相信这是通过 ev.preventDefault()?
最佳答案
在执行 ajax 请求之前,测试表单是否有效:
if (!$(this).valid()) return;
您可能也想尝试 submitHandler 选项:http://docs.jquery.com/Plugins/Validation/validate#options
关于javascript - jQuery preventDefault 在 POST 之前进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379409/