Имитация нажатия клавиш с помощью jQuery для элемента формы - PullRequest
2 голосов
/ 21 октября 2011

Я пытаюсь смоделировать нажатие клавиши с помощью приведенного ниже кода ...

jQuery('input[name=renameCustomForm]').live('keyup', function (e) {
      console.log('pressed');
});
jQuery('body').click(function (e) {
        console.log(jQuery('input[name=renameCustomForm]'));
        var press = jQuery.Event("keypress");
        press.which = 13;
        jQuery('input[name=renameCustomForm]').trigger(press);
 });

Я получил этот код из других постов на SO, но он не работает. Кто-нибудь знает почему?

Обновление

Исправлено ... Похоже, что нажатие клавиши "key" не запускается автоматически.

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Обычно, когда пользователь добавляет что-то в поле ввода, происходят следующие события:

  1. keydown (один раз).
  2. keypress (хотя бы один раз, дополнительные события происходят, пока нажата клавиша)
  3. keyup (один раз)

Когдаключевое событие моделируется, необязательно, чтобы все события происходили в этом порядке.Событие отправляется вручную, поэтому обычная цепочка событий не активируется.

Следовательно, если вы вручную инициируете событие keypress, событие keyup не будет запущено.

0 голосов
/ 21 октября 2011

Ваш код будет вызывать keypress каждый раз, когда вы нажимаете в любом месте на странице ..

Для вашего случая может быть лучше использовать событие .blur() поля ввода ..

jQuery('input[name=renameCustomForm]').live('keyup', function (e) {
      console.log('pressed');
}).live('blur', function(){
      var self = $(this);
      console.log( self );
      var press = jQuery.Event("keyup");
      press.which = 13;
      self.trigger( press );
});
...