2012-05-25 2 views
2

Фильтр сам по себе довольно легко:JQuery пользовательский фильтр не работает

$.expr[':'].valid = function(a) { 
    var phone = a.value.replace(/\D/g,''), 
     phonesub = phone.substr(0, 2); 
    return (phonesub == '79' || phonesub == '89') && phone.length == 11 
} 

Я просто хочу, чтобы проверить, если phone длиной нам 11 и она начинается с 79 или 89. Однако:

$(":valid") 
[<input type=​"text" id=​"phone1" name=​"phone1" value>​] 

ясно, что значение "".

Почему мой фильтр не работает?

Кстати, в то же время, есть еще один вход на DOM:

<input type="text" id="phone2" name="phone2" value="" disabled=""> 

и не получать соответствие фильтром. На него влияет disabled?

Давайте изменим это значение:

$("#phone2") 
[<input type=​"text" id=​"phone2" name=​"phone2" value disabled>​] 
$("#phone2").val("79111111111") 
[<input type=​"text" id=​"phone2" name=​"phone2" value disabled>​] 
$("#phone2").val() 
"79111111111" 
$(":valid") 
[<input type=​"text" id=​"phone1" name=​"phone1" value>​] 

Я отчаянно

ответ

2

Поскольку " действительный» его зарезервированное имя фильтра в jQuery. Используйте «validPhone» или другое имя вместо «valid».

+0

Muchos gracies, Arturka :) Это ответ. – Nemoden

0

Поскольку a является дом элемент, который вы должны написать

a.value.replace(/\D/g,''), 

или

$(a).val().replace(/\D/g,''), 
+0

Yep, 'value()' это опечатка в моем коде (обновленный вопрос). Тем не менее, работает неправильно. – Nemoden

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