2010-05-20 3 views
0

Просто надеясь, что soemone поможет мне написать лучший код, чем я могу придумать самостоятельно.улучшить код плагина проверки подлинности jQuery

Я использую плагин проверки jquery. У меня есть некоторые поля, которые являются обязательными ТОЛЬКО, если выбраны определенные параметры.

Этот код работает нормально. Но дело в том, что мой список «OR» намного длиннее, чем я здесь. и его нужно применять не только к «directorName», но и к большому списку входов, выбирает и т.д.

Мой вопрос: как я могу обернуть код, содержащийся внутри RETURN? (поэтому я не должен повторять мои «ИЛИ-х. Я guessign мне нужна функция, но я не уверен синтаксиса)

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

Заранее спасибо

ответ

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

Обратите внимание, что 'метод Array.prototype.indexOf' не поддерживается IE, однако для параметра [реализации] (https: // developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/IndexOf) метода может быть включен для его поддержки. – CMS

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 
    }, 

Если вы еще не читали, я предлагаю чтение 3-часть блога, что этот код прибывает свыше coldFusion Jedi.

1

Вы можете сделать это, которая поддерживается с помощью кросс-браузер $.inArray():

$("#myForm").validate({ 
rules: { 
    directorsName : { 
    required: function(element) { 
    return $('#account_for').val() == "Joint" || 
      $.inArray($('#directors_number').val(), ['2','3']); 
    } 
    } 
} 
}); 
Смежные вопросы