【问题标题】:jquery validation on duplicated fields wont highlight on clones重复字段上的 jquery 验证不会在克隆上突出显示
【发布时间】:2012-01-03 06:42:09
【问题描述】:

我正在使用

克隆表单上的一些选择框
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 验证适用于第一个欺骗,包括我正在使用的自定义高亮功能:

$(".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 上,但不会突出显示,我的高亮功能有什么问题?

据我在调试中看到的,它应用了高亮,但由于某种原因,它在克隆高亮之后调用取消高亮,我不明白为什么。 谢谢。

【问题讨论】:

  • 我们可以看到您的标记吗?您应该尝试记录元素以查看哪些元素被传递到每个函数中。
  • 在原帖中添加了jsfiddle,希望有人能指出正确的方向:)
  • 这里的验证似乎根本不起作用......?

标签: jquery validation duplicates clone highlight


【解决方案1】:

意识到出了什么问题。

我使用这个自定义验证来验证两个选择框,前提是第一个被选中:

$.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."); 

现在,按预期突出显示整个表单。 那太愚蠢了。我感觉很糟糕。对不起,如果我用这个让别人的大脑流下了独角兽的眼泪。

【讨论】:

    猜你喜欢
    • 2013-03-17
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多