2012-03-29 62 views
11

我有以下代码使用jQuery验证。jQuery验证添加类到错误元素?

$("#register").validate({ 
    debug: true, 
    errorClass:'error', 
    validClass:'success', 
    errorElement:'span', 
    highlight: function (element, errorClass, validClass) { 
     $(element).parents("div.control-group") 
        .addClass(errorClass) 
        .removeClass(validClass); 
    }, 
    unhighlight: function (element, errorClass, validClass) { 
     $(element).parents(".error") 
        .removeClass(errorClass) 
        .addClass(validClass); 
    } 
}); 

是有办法的类添加到errorElement,“跨度”,因此,它的...:

<span class="help-inline error">Message</span> 

回答

30

当您指定errorClass,并没有什么东西使得两件事情阻止你:“求助联错误”,即:

$("#register").validate({ 
    debug: true, 
    errorClass: 'error help-inline', 
    validClass: 'success', 
    errorElement: 'span', 
    highlight: function(element, errorClass, validClass) { 
     $(element).parents("div.control-group").addClass(errorClass).removeClass(validClass); 
    }, 
    unhighlight: function(element, errorClass, validClass) { 
     $(element).parents(".error").removeClass(errorClass).addClass(validClass); 
    } 
}); 

请注意,您必须使用jQuery验证的1.10版本,支持该。早期版本只允许一个errorClass

+1

我试过,但然后我得到其中跨度得到增加(但亮点并不删除)这个奇怪的事情... – redconservatory 2012-03-30 00:58:58

+2

啊你说得对,GitHub的版本实际上修复了这个问题 - 查看这里的错误函数:https://github.com/jzaefferer/jquery-validation/blob/master /jquery.validate.js#L492用你的jquery Validate替换你的版本,或者只是一个函数应该是足够的... – Ryley 2012-03-30 15:32:10

+0

这太神奇了,谢谢! – redconservatory 2012-03-30 18:17:50

0
$(".error").addClass('help-inline') 

help-inline类添加到与所有的DOM元素已经有error类。

这是你在找什么?

0

Ryley答案的一个替代方案,不包括将'help-inline'包含在'control-group'中,以避免突出显示的输入偏移。

$("#register").validate({ 
    debug: true, 
    errorClass: 'error help-inline', 
    validClass: 'success', 
    errorElement: 'span', 
    highlight: function(element, errorClass, validClass) { 
     $(element).parents("div.control-group").addClass('error').removeClass('success'); 
    }, 
    unhighlight: function(element, errorClass, validClass) { 
     $(element).parents(".error").removeClass('error').addClass('success'); 
    } 
}); 

我cound't包括像答案的评论这个问题...... O(,.

0

因为我认为这是对Twitter的自举,这是不需要一个更好的解决方案更新jQuery验证:

$("#register").validate({ 
    debug: true, 
    errorClass: 'help-inline', 
    validClass: 'success', 
    errorElement: 'span', 
    highlight: function(element, errorClass, validClass) { 
     $(element).parents("div.control-group").addClass("error"); 

    }, 
    unhighlight: function(element, errorClass, validClass) { 
     $(element).parents(".error").removeClass("error"); 
    } 
}); 
相关问题