[英]jquery validator plugin - changing validation rules dynamically
下面是我正在使用的代碼:
$('#button').click( function (e) {
var rules = rules_data; //object that holds all rules for form validation
if (a == b) { //some random criteria
delete object.rule5; //deletes specific rule (in this case 'rule5') out of object if criteria is met, otherwise the rules object is unchanged
}
var validate_form = $('#form').validate(rules);
if (validate_form === false) {
e.preventDefault();
}
});
我對這段代碼的問題 - 即使規則對象在每次點擊按鈕時都會發生變化(如果滿足條件),驗證只會接受第一次點擊的規則,即使規則被更改也會受到這些規則的限制。 我的意思是,如果按鈕點擊更改規則,我希望驗證放棄舊規則並應用新規則,但由於某種原因,這不會發生。
有什么建議么? 也許我在這里做錯了什么?
.validate()
是在表單上初始化插件的方法。 它只能在頁面上調用一次,如果你試圖再次調用它,無論你傳遞什么選項,它都不會做任何事情。
因此,您需要從click
處理程序中刪除.validate()
並將其放入DOM就緒處理程序中。
AFAIK是動態更改規則的唯一方法是使用內置rules('add')
方法替換它們。
如果你有一個名為field1
的輸入規則,最初定義如下...
rules: {
field1: {
required: true,
number: true
}
}
您只能通過替換它們來更改此字段的規則。 使用這樣的rules('add')
方法 ......
$('input[name="field1"]').rules('add', {
required: true,
number: false,
minlength: 10
});
如果要使用相同的設置一次定位多個字段,則必須合並jQuery .each()
方法。 像這樣......
$('input').each(function() {
$(this).rules('add', {
required: true,
minlength: 10
});
});
根據您的規則設置,您可以轉向並以其他方式處理它。 有一個或多個jquery變量用於指示規則應該是什么,然后讓驗證規則自己檢查這些變量。 (你也可以使用javascript vars,但必須注意范圍界定)。 驗證插件允許條件應用規則,以及自定義規則,其中接受/拒絕部分基於外部變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.