2010-02-27 54 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