簡體   English   中英

jquery驗證器插件 - 動態更改驗證規則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM