我有一个由优秀的JQueryValidation插件验证的表单。
但是,出于某种原因,表单在验证时根本不想提交。我已经隔离了问题,而且由于验证本身 - 我的表单HTML是有效的,并且在没有JQueryValidation的情况下提交正常。
以下是我传递给JqueryValidation对象的对象:
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."
},
});
表单的行为方式如下:
所有字段都完美地验证并按预期验证,在正确的时间显示正确的消息。但是当您单击“提交”按钮(这是一个类型为&#34的元素;提交")时,没有任何反应。按钮已经死了。
pattern.js文件位于上面代码的正下方,子域字段由RegEx正确验证。
我有一种潜在的怀疑,可能是因为"依赖"在registerSub元素上运行,但注释掉这些行无效。
任何见解都会受到赞赏......谢谢!
答案 0 :(得分:2)
因为你有debug: true,
会阻止表单提交,即使它有效......它只是用于测试....
删除它,它应该没问题
答案 1 :(得分:0)
问题解决了!
问题在于我使用的是localhost环境并且有remote
验证规则。
我在localhost环境中工作,并使用remote
规则验证域名和电子邮件地址字段。在本地环境中,由于HTTP安全限制,这些验证失败。
然而,我遇到的问题是该表格根本没有发布。
起初我认为这可能是因为表单无效,但我使用console.log
检查valid()方法,并返回true
。
因此,我认为必定会出现某种阻止表单提交的事件阻塞。
但是,当我将我的代码发布到实时环境中进行检查时,问题就消失了。
所以,似乎"遥控器"方法验证表单,但如果有一个远程验证的元素,则该验证不会计入valid()方法中。
我已经使用JQueryValidation记录了这一点。感谢大家的阅读。