重复字段上的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,希望有人能给我指出正确的方向:)这里的验证似乎根本不起作用。。。?