改进我的jquery验证插件代码

时间:2010-05-20 05:31:47

标签: javascript jquery

希望soemone可以帮助我编写比我自己想出的更好的代码。

我正在使用jquery验证插件。如果选择了某些选项,我有一些强制性的字段。

以下代码运行正常。但问题是,我的'OR'列表比我放在这里的时间长得多。它不仅需要应用于'directorName',还需要应用于一长串输入,选择等等。

我的问题是..如何整理RETURN中包含的代码? (所以我不必继续重复我的'OR'。我猜我需要一个函数,但我不确定语法)

$("#myForm").validate({
 rules: {
  directorsName : { 
   required: function(element) {
   return ( $('#account_for').val() == "Joint" || $('#directors_number').val() == "2" || $('#directors_number').val() == "3" );
   }
  }
 }
});

提前致谢

3 个答案:

答案 0 :(得分:1)

以下是自定义验证程序的代码段。您可以将相同的语法应用于您自己的自定义验证需求。

$.validator.addMethod("noanon", function(value) {
          return value.toLowerCase().indexOf("anonymous") != 0;
      }, 'Do not hide behind the cover of anonymity')

然后,您可以像使用任何内置验证规则一样使用它:

name: {
       required: true,
       minlength: 2,
       noanon: true
  },

如果您还没有阅读过,我建议您阅读此代码来自coldFusion Jedi的3部分博客。

答案 1 :(得分:1)

您可以执行此操作,使用$.inArray()跨浏览器支持:

$("#myForm").validate({
 rules: {
  directorsName : { 
   required: function(element) {
     return $('#account_for').val() == "Joint" || 
            $.inArray($('#directors_number').val(), ['2','3']);
   }
  }
 }
});

答案 2 :(得分:0)

list = ['1', '2', '3', '...'];
return $('#account_for').val() == "Joint" || list.indexOf($('#directors_number').val()) != -1;