2013-04-24 47 views
1

我無法將回調附加至jquery unobtrusive驗證。我想要做的就是在顯示字段驗證錯誤時隱藏信息性消息。他們都佔據了頁面上的相同區域。我無法弄清楚如何將回調附加到show error方法。我有一個工程,如果你調用驗證,但錯誤消息顯示之前,即使更改字段被激發。添加回調至不顯眼驗證的問題顯示錯誤

這是一個jsfiddle演示我的問題。 http://jsfiddle.net/K6NcF/4/

這是僅在調用validate()時才運行的回調函數。

$('#theForm').bind('invalid-form.validate',function(){ 
    $('.info-box').hide(); 
}); 

任何幫助,將不勝感激。

+0

我不是100%確定如何與'unobtrusive'做到這一點,只是用jQuery驗證插件,還有一大堆的回調函數,你可以玩小提琴。請參閱文檔:http://docs.jquery.com/Plugins/Validation/validate#toptions – Sparky 2013-04-24 16:19:24

+0

我在您的jsFiddle中看到的另一個問題; '

' - 它可能是或不是有效的HTML有一個'ID'開頭的數字,但它絕對不是一個好習慣。請參閱:http://stackoverflow.com/a/79022/594235 – Sparky 2013-04-24 16:20:55

+0

是的問題是我不相信我可以使用任何這些回調,因爲它們不會導致驗證消息顯示,而用戶正在編輯領域。它試圖綁定回調來顯示錯誤,但沒有成功。打電話給身份證,儘管這不是問題,但我不知道爲什麼我的目標是1,但我更新了它。 – 2013-04-24 17:46:00

回答

0

可以使用不顯眼這樣

// grab a reference to the validator instance 
var v = $('form').validate(); 

// reference the settings property, and the highlight function 
var originalHighlight = v.settings.highlight; 

你可以只覆蓋這與你的東西,或者下面的例子顯示了一個辦法,而不會覆蓋添加自己的功能是什麼時候訪問的亮點和unhighlight回調有。

var v = $('#theForm').validate(); 

var originalHighlight = v.settings.highlight; 
var originalUnHighlight = v.settings.unhighlight; 

v.settings.highlight = function(element, errorClass, validClass) 
{ 
    console.log('doing my stuff here'); 
    $('.info-box').hide(); 
    originalHighlight.call(v, element, errorClass, validClass); 
} 

v.settings.unhighlight = function(element, errorClass, validClass) 
{ 
    console.log('undoing my stuff here'); 
    $('.info-box').show(); 
    originalUnHighlight.call(v, element, errorClass, validClass); 
} 

這裏http://jsfiddle.net/K6NcF/8/