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