2012-06-18 26 views
1

我有一個註冊表單,通過jQuery Validate進行驗證,並且表單正確捕獲錯誤並顯示驗證錯誤消息,它不使用我的「label label-important 「類,直到我強制驗證/第二次點擊提交按鈕。未在Twitter中格式化jQuery.validate錯誤消息引導

到這裏看看:http://jsbin.com/uguwem/12/

這裏是我的js代碼:

$('#registrationform').validate({ 
    highlight: function (element, errorClass, validClass) { 
     $(element).parents("div[class='control-group']").addClass("error"); 
     $(element.form).find("span[for=" + element.id + "]").addClass("label label-important"); 
     }, 
     unhighlight: function (element, errorClass, validClass) { 
       $(element).parents(".error").removeClass("error"); 
     }, 
     errorElement: 'span' 
}); 
+0

,請確保您的代碼不會產生任何JavaScript錯誤。在bootstrp-button.js中,螢火蟲顯示此錯誤:$未定義 第67行 – chrisvillanueva

+0

放置jquery-1.7.1.min.js在bootstrap-button.js之前擺脫錯誤行67. – baptme

+0

我已經這麼做了 - 我的網站代碼已正確初始化,我只是將其粘貼錯誤。這就是說,它仍然不起作用 – SWL

回答

1

看起來highlight被稱爲之前產生的誤差元素(在你的情況下,span) 。

這意味着當您嘗試在highlight中第一次找到span時,它不存在。 validate不會刪除錯誤元素,它只會顯示並隱藏它們,這就是爲什麼它表單第二次被驗證。

我想解決這個問題,通過使用errorPlacement選項,而不是手動添加類:

$(document).ready(function() { 
    $('#registrationform').validate({ 
     //errorClass: "label-important", 
     highlight: function(element, errorClass, validClass) { 
      $(element).parents("div[class='control-group']").addClass("error"); 

     }, 
     unhighlight: function(element, errorClass, validClass) { 
      $(element).parents(".error").removeClass("error"); 
     }, 
     errorElement: 'span', 
     errorPlacement: function($error, $element) { 
      $error.addClass("label label-important").insertAfter($element); 
     } 
    }); 
});​ 

更新例如:http://jsbin.com/opoqan/

+0

錯誤的位置應該是'$ error.addClass(「label label-important」)。appendTo($ element.parents(「div.controls」));' –