Jquery .keyup для динамически добавляемого текстового поля - PullRequest
0 голосов
/ 03 ноября 2011

Как добавить событие keyup для динамически добавляемого textfield. Я занимаюсь разработкой веб-приложения на drupal. Когда я пытался использовать «live», меню не работают

$('input[id$="-code"], input[id$="-case"], input[id$="-vehicle-no"]')
.live('keyup', function(e){
   $(this).val($(this).val().toUpperCase());
});

Ответы [ 4 ]

0 голосов
/ 07 декабря 2011

Для новых элементов в JQuery вы используете живую функцию.Но если вы используете Drupal, вы должны использовать поведение.Я действительно не совсем понимаю вашу проблему, но я читал, что вы пытаетесь использовать вживую, поэтому я думаю, что это может помочь http://drupal.org/node/756722#behaviors

0 голосов
/ 03 ноября 2011

" @ swordfish..в моем случае после нажатия кнопки" AddRow "создается строка с четырьмя текстовыми полями. Среди этого есть текстовое поле" Нет автомобиля ". Только для этого конкретного текстового поля я хочу добавить это событие. Как я могу настроить свой код в соответствии с этим .."

Похоже, вы создаете новые строки, содержащие поля, к которым вы хотите прикрепить событие keyup. Если это так, то у вас может быть несколько элементов на одной странице с одинаковым идентификатором. Большое нет-нет.

Вместо этого, как предложил меч-рыба , добавьте класс в поля, к которым вы хотите присоединить событие keyup (используя этот класс в селекторе jQuery), и удалите атрибут id, используя только имя вместо атрибута (но без использования атрибута name для селектора jQuery - он вам не понадобится).

0 голосов
/ 03 ноября 2011

Вы можете сделать это и другим способом. Хотя это будет нарушать "Не повторяйся". Обратитесь к этому разделу в jquery FAQs, проблема с динамически созданными элементами . Вместо использования live, просто используйте .keyup () с селектором. Вы объявляете эти привязки снова под кодом, где элементы создаются динамически. Используйте ниже где-нибудь в коде внутри метода $ (document) .ready ().

$('input[id$="-code"], input[id$="-case"], input[id$="-vehicle-no"]')
.keyup(function(e){
$(this).val($(this).val().toUpperCase());
});

И ниже кода, где вы динамически создаете эти элементы, поместите ниже.

$('input[id$="-code"], input[id$="-case"], input[id$="-vehicle-no"]')
.unbind('keyup').keyup(function(e){
$(this).val($(this).val().toUpperCase());
});

Если все в порядке, оно должно работать. Попробуйте.

0 голосов
/ 03 ноября 2011

Чтобы сохранить беспорядок в коде, добавьте класс в поле ввода, которое вы добавляете динамически, чтобы вам было легко.В любом случае использование live будет работать.Проверьте эту скрипку

http://jsfiddle.net/QugQw/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...