我需要验证域字段是否正确以及占位符字段是否具有值。一旦两者都为真,将显示“提交”按钮。使用jQuery验证,我可以检查域是否正确,但它没有验证占位符字段。未应用playerClass
规则:
$(function() {
$("#form").validate({
rules: {
playerClass: {
required: true
}
},
submitHandler: function() {
$("body").append("<p>Validation Complete!</p>");
}
});
});
jQuery.validator.addMethod("domainChk", function(value, element, params) {
$(".submit").show();
if (this.optional(element)) return true;
var regExp = new RegExp("^(?!www\\.|http:\/\/www\.)(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$");
return regExp.test(value);
},
function errmess(params, element) {
$(".submit").hide();
return "Valid hostname required for player code";
});
jQuery.validator.addClassRules({
domainChk: {
domainChk: true
}
});
jsFiddle:Link
答案 0 :(得分:0)
未应用playerClass规则
您的第二个字段name="playerClass"
未经过验证,因为您未对其应用任何验证规则。您的jsFiddle或OP中没有名为playerClass
的规则,并且您没有对jsFiddle中的playerClass
字段应用任何规则。
即使playerClass
是自定义规则,该表单也被认为是有效的,因为playerClass
字段在您的jsFiddle中是可选的。如果没有required
规则,当该字段留空时,它有效。
您还未能关闭jsFiddle中的<form>
元素。没有</form>
标记。
修改强>:
根据文档,任何ajax()
都应该放在submitHandler
方法中的.validate()
函数内。
换句话说,您正在使用click
处理程序破坏验证插件。
我需要验证域字段是否正确以及占位符字段是否具有值。两者都为真后,将显示“提交”按钮。
那么为什么要在domainChk
规则中显示提交按钮?一旦通过此规则,您就会显示带$(".submit").show()
的按钮。< / p>
您通常会使用.valid()
方法来测试表单并显示/隐藏按钮。
$('input[type="text"]').on('click keyup blur', function() {
if ($('#form').valid()) {
$(".submit").show();
} else {
$(".submit").hide();
}
});
这更接近应该如何:http://jsfiddle.net/e04rca0t/2/