微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery validate插件:具有动态元素ID的自定义规则

如何解决jQuery validate插件:具有动态元素ID的自定义规则

| 我尝试使用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
等的多个字段。 是否可以像我一样将上述验证应用于多个元素?

解决方法

我不确定
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/ 我将做更多的挖掘,看看是否有一种方法可以在最初传递给验证器的options对象中添加规则。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。