2010-08-15 132 views
9

我有一个表单,其中包含“您的帐单地址与您的送货地址相同”字段。如果用户单击单选按钮“否”,则显示隐藏的ul#billingAddress。如果ul#billingAddress中包含的字段可见,那么它是必需的,也就是说ul有display:block。jQuery验证插件 - 只在可见时验证隐藏元素

如何为jquery validate.js编写自定义addMethod,只有当该字段可见时才需要这些自定义addMethod?这是我有没有工作。

$.validator.addMethod ("BillingSameAsShipping", function(value, element) { 
    var billingFields = ['billingAddress1','billingAddress2','billingCity','billingState','bilingZip'] 
    if ($("#billingAddress").is('visible') && billingFields.val('') { 
     return false; 
    } else 
     return true; 
}, "Please fill in the required billing information"); 

这显然是顶起来的。我需要让它适用于var中的每一个。

谢谢!

+0

您是否试过让它们不仅看不见,而且还将它们设置为禁用?这只是一个猜测,但由于禁用的表单字段无法传输,所以我期望他们不会进行验证。 – Tomalak 2010-08-15 21:19:35

+0

我不应该让他们禁用,我只是希望他们只在可见时进行验证。除非让他们禁用更容易? – 2010-08-15 21:26:36

+0

我的意思是让他们都看不见*和*禁用。用jQuery,这很简单。 – Tomalak 2010-08-15 21:28:10

回答

19

可见检查的问题是这部分:.is('visible')它需要是:.is(':visible')使用:visible selector


作为替代方案,可以使用ignore option做你想要的东西更容易一点,像这样:

$("#myForm").validate({ 
    //other options 
    ignore: ':hidden' 
}); 

此方法可让您使用所需的规则标准,如果你想。

+0

尼克一如既往。 Thx男人! – 2010-08-15 21:54:17