2010-02-27 65 views
2

在我的客戶登記表,我有以下規則驗證(bassistance插件)需要(依賴回調)問題

// Define the div containing validation messages 
var container = $('#clientErrorWrapper'); 
// Start validation routine 
// validate the form when it is submitted 
var validator = $("#frmEdit").submit(function() { 
    // update underlying textarea before submit validation 
    tinyMCE.triggerSave(); 
    }).validate({ 
    errorContainer: container, 
    errorLabelContainer: $("ul", container), 
    wrapper: 'li', 
    // start rules (add new rules as necessary) 
     rules: { 
      firstname: { 
       required: true 
      }, 
      lastname: { 
       required: true 
      }, 
      email: { 
       required: true 
      }, 
      address1: { 
       required: true 
      }, 
      city: { 
       required: true 
      }, 
      state_province: { 
       required: function(element) { 
        return $("#country").val() == 'US'; 
        } 
      }, 
      postcode: { 
       required: true 
      }, 
      country: { 
       required: true 
      } 
    // finish rules 
    } 

我想延長州(省)規則,使這個字段是必須的,如果國家等於CA或非盟,我怎麼能達到這一點。

回答

4

你可以這樣做:

 state_province: { 
      required: function(element) { 
       var c = $("#country").val(); 
       return c=='US' || c=='CA' || c=='AU'; 
       } 
     } 

無需得到比,除非你的名單會越來越長一點比較複雜。

但是,如果名單不斷增加,您可以使用jQuery's .inArray()

 state_province: { 
      required: function(element) { 
       return $.inArray($("#country").val(), ['US','CA','AU']) > -1; 
       } 
     } 
+0

尼克, 感謝您的第一個解決方案完美地工作,但第二個顯示螢火無效的對象初始化 – 2010-02-27 15:01:22

+0

以下錯誤@ I-CRE8 - Woops ,使用'[]'而不是'{}'爲數組,更新答案。 – 2010-02-27 15:12:10

+0

非常感謝尼克。 – 2010-02-27 15:19:40