jQuery验证插件。将新规则添加到现有规则
我有一个使用jQuery验证的项目。 这是我的密码:jQuery验证插件。将新规则添加到现有规则,jquery,jquery-validate,Jquery,Jquery Validate,我有一个使用jQuery验证的项目。 这是我的密码: <script type="text/javascript" src="Scripts/jquery-1.5.1.js"></script> <script type="text/javascript" src="Scripts/jquery.validate.js"></script> <form action="/" id="MyForm" onsubmit="greeting()"&
<script type="text/javascript" src="Scripts/jquery-1.5.1.js"></script>
<script type="text/javascript" src="Scripts/jquery.validate.js"></script>
<form action="/" id="MyForm" onsubmit="greeting()">
<input type="checkbox" value="val1" name="dner" />
<input type="submit" value="Submit" />
</form>
<script type="text/javascript">
function greeting() {
return $("#MyForm").valid();
}
$(document).ready(function () {
$("#MyForm").validate({ onsubmit: true }); //If comment this code line, it work!!!
$.validator.addMethod("MyFunction", function (value, element) {
if ($("input:checked").length > 0) { return true } else { alert("Пустое поле"); return false; }
},
"");
$("#MyForm").rules("add", { dner:{ MyFunction :true}});
});
</script>
函数问候语(){
返回$(“#MyForm”).valid();
}
$(文档).ready(函数(){
$(“#MyForm”).validate({onsubmit:true});//如果对这一代码行进行注释,它就会工作!!!
$.validator.addMethod(“MyFunction”,函数(值,元素){
if($((“输入:已检查”).length>0{return true}else{alert(“ППбббПбб”);return false;}
},
"");
$(“#MyForm”).rules(“add”,{dner:{MyFunction:true});
});
当我注释一行代码时,它就工作了。这是非常重要的,因为在我的项目中,我有一套新的验证规则,我不能重做它。如何向现有规则添加新规则?您的代码:
//If comment this code line, it work!!!
$("#MyForm").validate({ onsubmit: true });
如果你注释掉整行,你将删除插件的初始化方法
这是一个没有意义的问题,因为您的代码在这两种情况下都不起作用。看到或看到
您必须纠正以下问题:
1)
onsubmit:true
已经是默认的行为,因此通过将其设置为true
,可以中断插件。如果您希望在单击submit
按钮时进行验证,只需将此选项忽略即可
:
onsubmit(默认值:true):在提交时验证表单。设置为
false
仅使用其他事件进行验证。
设置为函数以自行决定何时运行验证布尔值true
不是有效值
2) 您的代码:
$(“#MyForm”)。规则(“添加”…
您不应该将.rules()
方法附加到表单
。您仅将其附加到字段
元素
$('input[name="dner"]').rules("add", {
MyFunction: true
});
看
要将此方法同时应用于多个字段,请使用jQuery.each()
$('input[type="checkbox"]').each(function() {
$(this).rules("add", {
MyFunction: true
});
});
3) 您不需要内联的
submit
处理程序:onsubmit=“greeting()”
。使用jQuery时,完全不需要内联JavaScript。此外,submit
处理程序会干扰插件内置的submit
处理程序。如果使用此插件时需要在submit
事件上执行某些操作,请使用submitHandler
回调函数
submitHandler: function(form) {
// fire this code when a valid form is submitted
return false; // prevent default form action, e.g. when using ajax()
}
如果需要在表单无效时触发代码,请使用invalidHandler
回调
invalidHandler: function(event, validator) {
// fire this code when an invalid form is submitted
}
有关示例,请参见
4) 您的自定义方法可以压缩
$.validator.addMethod("MyFunction", function (value, element) {
return ($("input:checked").length > 0)
}, "Пустое поле");
如果您更愿意使用警报()
而不是标签
消息,可以将其放回原处。尽管我不建议在任何现代设计中使用alert()
应用所有更改的演示:您建议的$('input[name=“dner”]')。规则(“add”,{MyFunction:true});我可以实现规则功能来不输入字段吗?因为我有几个复选框,我想选中这是一组复选框。@higgs.boson,复选框是一个输入字段。请参阅我编辑的答案,其中我展示了如何一次对多个元素使用
.rules('add')
。我想检查复选框组中是否至少选择了一项。我该怎么做?@higgs.boson,你从来没有在你的OP中提到过这方面的任何事情。但是,你可以包括additional methods.js
文件,并使用require\u from\u group
方法。指令嵌入在该文件的代码注释中。看到这个答案:我的项目非常大,我发布了唯一重要的时刻。是否有简单的方法可以轻松验证几个字段?无论如何,非常感谢!!!!!