JQueryValidation阻止表单提交,即使表单有效
我有一个由优秀的JQueryValidation插件验证的表单 但是,由于某些原因,表单在验证时根本不希望提交。我已经隔离了这个问题,这是由于验证本身——我的表单HTML是有效的,提交时没有JQueryValidation 以下是我要传递给JqueryValidation对象的对象:JQueryValidation阻止表单提交,即使表单有效,jquery,jquery-validate,Jquery,Jquery Validate,我有一个由优秀的JQueryValidation插件验证的表单 但是,由于某些原因,表单在验证时根本不希望提交。我已经隔离了这个问题,这是由于验证本身——我的表单HTML是有效的,提交时没有JQueryValidation 以下是我要传递给JqueryValidation对象的对象: var validator = $("#registrationForm").validate({ debug: true, rules: { regi
var validator = $("#registrationForm").validate({
debug: true,
rules: {
registerName: {
required: true
},
registerEmail: {
required: true,
email:true,
remote: "http://beta.build2trade.com/Testmail.asp",
},
registerPassword: {
required: true
},
registerPasswordConfirm: {
required: true,
equalTo: "#registerPassword"
},
registerSub: {
pattern: "^[a-zA-Z0-9]+$",
remote: "http://beta.build2trade.com/testsub.asp",
required: {
depends: function(element) {
if ($("#domain-type-3").is(":checked")){
console.log("Subdomain Radiobutton checked");
return true;
} else {
console.log("Subdomain Radiobutton not checked");
return false;
}
}
}
},
},
messages : {
registerName: "Please type in your name.",
registerEmail: "Please enter a valid email.",
registerPassword: "Please type in your password.",
registerPasswordConfirm: "Please confirm your password.",
registerSub: "Invalid Subdomain."
},
});
这是窗体的行为方式:
所有字段都按照预期进行了完美验证,在正确的时间显示了正确的消息。但是,当您单击Submit按钮(这是一个类型为“Submit”的元素)时,什么都不会发生。按钮没电了
pattern.js文件包含在上面代码的正下方,子域字段通过RegEx正确验证
我暗自怀疑这可能是由于registerSub元素上的“depends”函数造成的,但将这些行注释掉并没有任何效果
如有任何见解,将不胜感激。。。谢谢大家! 因为您有
debug:true,
这将阻止表单提交,即使表单有效。。。这只是为了测试
拆下它,它应该会很好问题解决了
问题在于我使用的是本地主机环境,并且有一个remote
验证规则
我在本地主机环境中工作,使用remote
规则验证域名和电子邮件地址字段。在本地环境中,由于HTTP安全限制,这些验证失败
然而,我遇到的问题是表单根本没有发布
起初我认为这可能是因为表单无效,但我使用console.log
检查valid()方法,它返回true
因此,我认为一定有某种事件阻止了表单的提交
但是,当我将代码发布到实时环境中进行检查时,问题就消失了
因此,似乎“remote”方法验证表单,但如果存在远程验证的元素,则valid()方法中不会计算该验证
我已经用JQueryValidation记录了这个。感谢大家的阅读。。。。那很快。谢谢你,阿伦!不幸的是,删除debug:true后问题仍然存在。我也有其他表单设置了这一行,可以正确发布。@Gandalf,如果你认为可以在
debug:true
就绪时提交表单,那你就错了。$(“#registrationForm”).valid()
返回true
你需要阅读跨站点脚本以及它与JavaScript的关系。换句话说,如果某个域与JavaScript不在同一个位置,您就不能在远程方法中放入完整的URL。我理解,远程方法提供了一种查询远程脚本以进行服务器端验证的方法。我和插件开发人员一起记录了这个问题,他们已经承认了。是的,只要他们在同一个域上。我知道如果remote
方法无法连接,您是如何声明.valid()
应该是false
。但是,我也看到了,就像这个例子一样。