我有一个由优秀的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."
},
});
这是表单的行为方式:
所有字段都按照预期完美地进行了验证,在正确的时间显示了正确的消息。但是当您单击Submit按钮(这是一个类型为“submit”的元素)时,什么也不会发生。按钮坏了。
在上面的代码下面包含了pattern.js文件,并且RegEx正确地验证了子域字段。
我暗自怀疑这可能是由于registerSub元素上的"depends“函数造成的,但是注释掉这些行没有任何效果。
任何洞察力都将不胜感激。谢谢!
发布于 2014-03-22 11:42:41
因为您有debug: true,
,它将阻止表单提交,即使表单是有效的…它只是为了测试..。
去掉它,它就会好起来
发布于 2014-03-22 13:18:59
问题解决了!
问题在于我使用的是本地主机环境,并且有一个remote
验证规则。
我在本地主机环境中工作,使用remote
规则验证域名和电子邮件地址字段。在本地环境中,由于HTTP安全限制,这些验证失败。
然而,我遇到的问题是表单根本没有张贴。
起初,我认为这可能是因为表单无效,但我使用console.log
检查valid()方法,它返回true
。
因此,我认为一定是有某种事件阻止了表单的提交。
但是,当我将我的代码发布到一个实时环境中进行检查时,这个问题消失了。
因此,看起来"remote“方法验证了表单,但是如果有一个元素是远程验证的,那么这个验证不会计入valid()方法中。
我已经用JQueryValidation记录了这一点。感谢大家的阅读。
https://stackoverflow.com/questions/22577111
复制相似问题