jQuery validate plugin:具有动态元素id的自定义规则

时间:2011-04-19 12:39:53

标签: jquery jquery-validate

我试图使用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_field11txt_field12的多个字段,依此类推。

我可以像我的情况一样对多个元素应用上述验证吗?

1 个答案:

答案 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/

我会进行更多挖掘,看看是否有办法在最初传递给验证器的选项对象中添加规则。