Исп. селектора filter для вызова плагина
Добрый вечер!
Задача создать форму регистрации в которой присутствуют как поля ввода, так и списки с выбором региона/страны. На данном этапе реализую обработку введенных данных. $('input').bind('keyup change',function(){ //Если измененное поле не пустое, то: if ($(this).val() !== ''){ $(this).check_input(); $(this).filter('.login.enebled').check_login(); $(this).filter('.password_retype').check_password_retype(); } }); Создал плагин check_input, который общий для всех полей ввода + плагины с доп. проверкой, которые должны запускаться только для соотв. класса - check_password_retype и др. Вопрос такой: при использовании filter ожидаю, что поле ввода которое не имеет соотв. класс отфильтруется и плагин не будет выполнен, но в результате выполняются все плагины по очереди. Какие пути решения? + дополнительный вопрос. Процедура срабатывает два раза по keyup (необходимо для полей ввода) и change (необходимо для списков). Пока не критично, но как сделать чтобы процедура срабатывала по keyup и не работала по change? |
IONEX,
попробуйте так $('input').on('input',function(){ //Если измененное поле не пустое, то: if ($.trim(this.value)){ $(this).check_input(); $(this).filter('.login.enebled').check_login(); $(this).filter('.password_retype').check_password_retype(); } }); Цитата:
|
Цитата:
http://jsfiddle.net/1xe4ea45/ Проверяйте длину в начале плагина и делайте return если она нулевая. Или лучше вместо фильтра использовать более очевидное if($(this).hasClass('password_retype') {} ИМХО :) |
Благодарю за ответы!
Цитата:
if (this.val() === undefined){ return; } Что касается if, то основной код, как мне кажется, получится сильно громоздким если в каждом if будет около 15 строк. Поэтому стараюсь все сделать с использованием плагинов и процедур, да, и править легче. Рони, Ваш совет также помог - с input все работает! Еще раз, всем спасибо!;) |
Цитата:
if(!$.trim(this.value)) return; а проверить наличие объекта, это if(!$('selector').length) return; Единственный retun в условии при наличии фигурных скобок, это уже два лишних байта, да еще переход на строки... |
Часовой пояс GMT +3, время: 10:22. |