2012-03-29 57 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"); 
    } 
}); 
相關問題