我有以下代碼:jQuery驗證自定義驗證不正確
HTML:
<form id="myTestFrom">
<input type="text" name="test_txb" id="test_txb" value="" class="form-control" />
</form>
JS:
$(function() {
$.validator.addMethod('testValidationMethod', function (value, element) {
alert('FIRED');
}, 'test error message');
$('#myTestFrom').validate({
rules: {
/* (*) */test_txb: { testValidationMethod: true }
}
});
});
的問題很簡單:我的自定義驗證方法永遠不會被調用。
我已經在StackOverflow(例如this)上閱讀過幾個類似的問題和答案,但他們都沒有工作。事實上,恰恰相反。他們大多數人建議jQuery驗證程序通過查找名稱爲的指定而不是指定的ID來查找輸入字段。也就是說,(*)
的對象屬性名稱必須與要驗證的輸入的name
屬性匹配。然而,正如你在我的代碼中看到的,我的做的在我的輸入上有test_txb
的名字(以及id),但是由於某種原因,我的驗證器方法永遠不會按照上面的代碼被調用。
然而,如果我作爲一個類中添加驗證方法(testValidationMethod
)的名稱我輸入字段,然後它被調用。這聽起來與我在SO上讀過的任何東西都有矛盾,因爲所有這些答案都表明默認行爲是驗證器在設置自定義驗證規則時檢查元素的name
屬性。
那麼這裏發生了什麼,請問有人能解釋一下嗎?最簡單的解決方案當然就是添加前面提到的類名,但是我討厭用別的不必要的東西亂丟我的代碼,特別是如果我不完全理解爲什麼我應該這樣做的原因。
編輯: jQuery的驗證器版本是1.15.1
編輯2:我也有ASP.NET MVC不顯眼的lib引用,也許這東西conflits?
丁,丁,丁....你的「編輯2」是根本原因。你不能多次調用'.validate()'。由於不顯眼的自動構造和調用'.validate()',你的實例被完全忽略。 – Sparky