2016-11-16 2 views
1

Может ли jQuery проверять плагин пропускать несколько методов через одно поле?Как добавить несколько методов для одного поля в jQuery validate

, например, добавить два метода:

var num1 = 1; 
    num2 = 10; 
    range1 = 100; 
    range2 = 250; 
    value = $("#something_from_html") 

$.validator.addMethod("method_one", function(value, element) { 
    if(value < num1 || value > num2) 
     return false; 
    return method_one(value, num1, num2); 
}, I18N("wrong number")); 


$.validator.addMethod("method_two", function(value, element) { 
    if(value < range1 || value > range2) 
     return false; 
    return method_two(value, range1, range2); 
}, I18N("wrong range")); 

и возвращают другое предупреждающее сообщение одно поле:

$("#form").each(function(index, el) { 
    $(el).validate({ 
     rules: { 
      something_from_html: { 
       required: true, 
       method_one: true, 
       method_two: true 
      }, 
     }, 

    }); 
}); 

HTML-часть:

<form id="form" name="form">  
    <input type="text" name="something_from_html" id="something_from_html"> 
</form> 

Когда я добавляю один метод чтобы править, он работает отлично. Но когда я добавляю оба метода method_one и method_two, это не работает. Кто-нибудь знает, как это исправить?

+0

Вызов 'каждый()' на селектор ID немного излишним. У вас есть только один элемент с идентификатором 'form' в вашем HTML, правильно? –

+0

@RoryMcCrossan да !! только получил один элемент. –

+0

элемент pass это для меня. –

ответ

1

Проблема связана с логикой в ​​ваших дополнительных методах; они должны возвращать логическое значение, указывающее правильность введенного значения.
В настоящее время они пытаются вызвать глобальный метод с указанным им именем метода валидатора, которого не существует.

Вы также должны использовать parseInt() преобразовать текстовое значение, введенное в ко входу в целое число, так что его можно сравнить с вашими num и range значений. Кроме того, эти переменные должны быть объявлены в рамках методов валидатора для сохранения любых проблем, связанных с определением области видимости.
Попробуйте это:

$.validator.addMethod("method_one", function(value, element) { 
    var num1 = 1, num2 = 10; 
    value = parseInt(value, 10); 
    return !(value < num1 || value > num2); 
}, I18N("wrong number")); 


$.validator.addMethod("method_two", function(value, element) { 
    var range1 = 100, range2 = 250; 
    value = parseInt(value, 10); 
    return !(value < range1 || value > range2); 
}, I18N("wrong range")); 

Working example

+0

Спасибо, это работает! :) –

Смежные вопросы