0

我有自定義驗證器,一切工作,除了錯誤消息不會被刪除時,值被改變。asp.net unobtrusive驗證刪除價值變化

(function ($) { 
$.validator.addMethod('lastcategory', function (value, element) { 
    alert(value); 
    return value != 0; 
}, ''); 

$.validator.unobtrusive.adapters.addBool('lastcategory'); 

$.validator.setDefaults({ ignore: [] }); 
}(jQuery)); 

我的領域是隱藏領域。當我按提交時,值是0,錯誤是可見的。當我通過jquery,eq:7更改值時,錯誤消息仍然存在。

爲什麼?

回答

0

因爲這樣的隱藏字段的值更改不會後面的插件使用的事件不會被刪除的錯誤,如onfocusoutonkeyup

在你的jQuery,您可以更改值之後您的隱藏字段,請撥打the plugin's .valid() method to programmatically trigger another validation test,然後它會自動更新任何未完成的消息。

$('#myHiddenFieldID').val(myNewValue); // whatever code is changing the value of the hidden field. 
$('#myFormID').valid(); 
+0

字段更改時的默認驗證檢查。例如,如果文本框限制爲6,當我編寫7個字符時,錯誤是可見的,當我刪除一個字符時,錯誤不可見。我怎麼可以用自定義驗證器來做到這一點,但不是總的手動方式? – 2013-03-12 00:51:34

+0

@NovkovskiStevoBato,我已經向您展示瞭如何在上面做到這一點。你如何改變隱藏領域的價值?什麼代碼是這樣做的?那就是放置'$('#myFormID')。valid();'之後的地方。 – Sparky 2013-03-12 01:03:23

+0

我可以很簡單地做這個手冊,但爲什麼當我改變隱藏字段值時驗證消息不會消失。 $('#myhidden')。val(5) 爲什麼我需要手動調用。正如你在你發佈的鏈接上看到的那樣,當你點擊驗證時,在開始時是假的,錯誤是可見的,但是在鍵入內容後立即發生,錯誤不可見。這就是我想要做的,在$('#myhidden')。val(5)之後,錯誤在沒有手動工作的情況下消失。 – 2013-03-12 01:17:06