重复字段上的jquery验证不会在克隆上突出显示
我正在使用克隆表单上的一些选择框重复字段上的jquery验证不会在克隆上突出显示,jquery,validation,duplicates,clone,highlight,Jquery,Validation,Duplicates,Clone,Highlight,我正在使用克隆表单上的一些选择框 var o = settings; var obj = $(this); var objMatrix = $("div#dup_idiom").clone(true); var placeHolder = obj.find(o.placeHolder); var processClone = jQuery.format(objMatrix.html()); placeHolder.append($(processClone(i++)).addClass('clo
var o = settings;
var obj = $(this);
var objMatrix = $("div#dup_idiom").clone(true);
var placeHolder = obj.find(o.placeHolder);
var processClone = jQuery.format(objMatrix.html());
placeHolder.append($(processClone(i++)).addClass('closeable'));
派遣人
obj.find(o.addRow).on('click', function(e) { ... });
克隆很好用。这是一个在document.ready上调用的函数,因此在页面加载时,页面上至少有一个默认克隆组
jquery验证在第一次复制时运行良好,包括我正在使用的自定义hightlight函数:
$(".selector").validate({
highlight: function(element, errorClass) {
if($(element).hasClass('langDep')) {
$('#idiomArea').addClass(errorClass);
} else {
$(element).closest('.clearfix').addClass(errorClass);
}
},
unhighlight: function(element, errorClass) {
$(element).closest('.clearfix').removeClass(errorClass);
}
});
当我复制组时,如果不正确,验证会将消息放在dup上,但不会将其突出显示,我的hightlight功能有什么问题
就我在debug中所见,它应用了highlight,但出于某种原因,它在克隆上高亮显示之后调用了unhighlight,我不明白为什么。
谢谢。意识到了问题所在
我使用此自定义验证来验证两个选择框,仅当选择第一个时:
$.validator.addMethod("langDeep", function(value, element) {
if(!$(element).parent().prev().children("select").val()) return true;
return value;
}, "Please select both the item and its amount.");
问题是我试图突出一个区域,而不是表单这一部分的单个元素。它是为第一个被骗者工作的,而不是为所有其他被骗者工作的。
结果表明,如果组中至少有一个是正确的,验证将返回true,这就是为什么它对第一个有效,而不是对重复,第一个总是正确的!
诀窍是将自定义验证设置为组验证。像这样:
$.validator.addMethod("langDeep", function(value, element) {
var v = true;
$('.dup_idiom_area').find('select.langDeep').each(function(){
if(!$(this).val() && $(this).parent().prev().children("select").val()) {
v = false;
}
});
return v;
}, "Please select both the item and its amount.");
现在,hightlight按预期为整个表单工作。
那太傻了。我感觉糟透了。抱歉,如果我用这个让别人的大脑流下了独角兽的眼泪。我们能看看你的标记吗?您应该尝试记录元素以查看哪些元素被传递到每个函数中。在原始帖子中添加了JSFIDLE,希望有人能给我指出正确的方向:)这里的验证似乎根本不起作用。。。?