validate验证表单时多个name相同的元素的解决办法

使用jquery validator插件时,会碰见页面中name值相同的情况,此时因为validator验证规则默认是通过name值验证的,所以validator验证不起作用,可在页面中加入以下代码:

$(function () {
if ($.validator) {
    $.validator.prototype.elements = function () {
        var validator = this,
            rulesCache = {};
        return $([]).add(this.currentForm.elements)
        .filter(":input")
        .not(":submit, :reset, :image, [disabled]")
        .not(this.settings.ignore)
        .filter(function () {
            var elementIdentification = this.id || this.name;
            !elementIdentification && validator.settings.debug && window.console && console.error("%o has no id nor name assigned", this);
            if (elementIdentification in rulesCache || !validator.objectLength($(this).rules()))
                return false;
            rulesCache[elementIdentification] = true;
            return true;
        });
    };
 
}
 
});

然后给name值相同的节点加入id属性,此时validator会根据id进行验证

然后再加入以下代码即可:

$(function(){
  $("#myform").validate();
  $("[name=email]").each(function(){
     $(this).rules("add", {
       required: true,
       email: true,
       messages: {
         required: "请输入正确email"
       }
     });   
   });
});

 

posted @ 2019-04-08 17:26  fatTmonkey  阅读(1199)  评论(0编辑  收藏  举报