Javascript 阻止jQuery Ajax成功阻止表单提交
我正在使用jqueryvalidate和remote来检查电子邮件地址是否存在。不要问我为什么,但如果在数据库中找到匹配项(false),我需要它重定向到新页面,否则他们应该能够正常使用表单 这段代码工作得非常完美,除了:如果它返回true(意味着它没有重定向),那么表单提交按钮什么都不做。我没有看到任何像disabled这样的属性,但是表单提交被明确地阻止了。如果我没有在电子邮件输入中键入任何内容,它将允许我单击按钮Javascript 阻止jQuery Ajax成功阻止表单提交,javascript,jquery,ajax,forms,jquery-validate,Javascript,Jquery,Ajax,Forms,Jquery Validate,我正在使用jqueryvalidate和remote来检查电子邮件地址是否存在。不要问我为什么,但如果在数据库中找到匹配项(false),我需要它重定向到新页面,否则他们应该能够正常使用表单 这段代码工作得非常完美,除了:如果它返回true(意味着它没有重定向),那么表单提交按钮什么都不做。我没有看到任何像disabled这样的属性,但是表单提交被明确地阻止了。如果我没有在电子邮件输入中键入任何内容,它将允许我单击按钮 rules: { fullname:
rules: {
fullname: "required",
email: {
required: true,
email: true,
remote: {
url: "validate-email.php",
type: "post",
success: function(response) {
if(response === false){
window.location.href = 'new-page.html';
}
},
},
},
},
一旦我删除了success:section,表单提交正常工作,很明显它与我在那里做的事情有关。。。提前感谢您的帮助 不确定这是否是最好的解决方案,但我可以通过使用以下方法来修复它:
remote: {
url: "validate-email.php",
type: "post",
complete: function(data) {
if(data.responseText == "false"){
window.location.href = 'new-page.php';
}else{
return response;
}
},
谢谢你的帮助 是的,正如我试图解释的。。。使用服务器端代码在
false
上执行重定向。默认情况下,当从PHP回显true
时,将自动满足remote
规则。通过使用success
选项,您正在破坏此默认功能。我创建了一个新问题,因为我认为它会令人困惑。我尝试将它添加到php脚本中,但它没有做任何事情。您引用的是一个简单的标题(位置:'newpage.html');对吗?验证插件将您的远程:
选项合并到对$.ajax
的调用中。它有自己的success:
函数来处理响应,以便将元素标记为有效或无效。但是您的success
函数正在覆盖它,因此验证不起作用。@Sparky在验证的服务器端他会怎么做?AJAX调用的重定向不会重定向客户端页面。@Barmar感谢您提供的信息。但是我有点困惑,因为验证仍然可以正常工作,唯一的问题是如果我在电子邮件输入中键入任何内容,我的表单提交按钮将停止工作。我仍然会得到验证响应(绿色检查为ok,或重定向为Take)。有没有其他成功的方法来达到同样的效果?