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"
       }
     });   
   });
});

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM