我试图使用jQuery应用自定义验证规则,如下所示
<script type="text/javascript">
$(document).ready(function(){
jQuery.validator.addMethod("notaccept", function(value, element, param) {
return value.match(new RegExp("." + param + "$"));
}, "<img src='../template/images/error.gif' alt='Only alphabet allowed.'>");
$("#frm1").validate({
rules: {
$('input[id^=txt_field]'): {
notaccept: "[a-zA-Z]+" }
}
});
});
</script>
问题是在上面的代码中使用元素前缀选择器并不起作用。我生成格式为txt_field11
,txt_field12
的多个字段,依此类推。
我可以像我的情况一样对多个元素应用上述验证吗?
答案 0 :(得分:2)
我不确定rules
选项是否足够强大,可以接受元素的任意选择器,并为这些元素应用验证规则。
但是,您可以在初始化验证器后添加规则:
$.validator.addMethod("notaccept", function(value, element, param) {
return value.match(new RegExp("^" + param + "$"));
}, "Only alphabet allowed");
$("#form").validate({...});
$('input[id^="txt_field"]').each(function() {
$(this).rules("add", { notaccept: "[a-zA-Z]+" });
});
.each
调用是必要的,因为看起来验证者只在第一个匹配的项目上调用.rules()
。
以下是一个有效的例子:http://jsfiddle.net/fDAQU/
我会进行更多挖掘,看看是否有办法在最初传递给验证器的选项对象中添加规则。