jquery - нажатие - коды клавиш js




Окончательный способ запуска событий нажатия клавиш с помощью jQuery (7)

Я прочитал все ответы на эти вопросы, и ни одно из решений, похоже, не работает.

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


Вы хотите сделать это в одной строке, которую вы можете использовать

$("input").trigger(jQuery.Event('keydown', { which: '1'.charCodeAt(0) }));

Если вам нужно учесть текущий курсор и выбор текста ...

Это не работало для меня для приложения AngularJS в Chrome. Как указывает Надя в исходных комментариях, символ никогда не отображается в поле ввода (по крайней мере, это был мой опыт). Кроме того, в предыдущих решениях не учитывается текущий выбор текста в поле ввода. Мне пришлось использовать прекрасный jquery-selection библиотеки.

У меня есть пользовательская экранная цифровая клавиатура, которая заполняет несколько полей ввода. Мне пришлось...

  1. В фокусе сохраните lastFocus.element
  2. При размытии сохраните текущий текст (начало и останов)

    var pos = element.selection('getPos')
    lastFocus.pos = { start: pos.start, end: pos.end}
    
  3. Когда нажимается кнопка на моей клавиатуре:

    lastFocus.element.selection( 'setPos', lastFocus.pos)
    lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})
    

Если вы хотите запустить событие нажатия клавиш или keydown, вам нужно только:

var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);

Реальный ответ должен включать keyCode:

var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);

Несмотря на то, что на веб-сайте jQuery говорится, что код и keyCode нормализованы, они очень сильно ошибаются. Всегда безопасно выполнять стандартные кросс-браузерные проверки для e.which и e.keyCode и в этом случае просто определить оба.


Чуть более кратким теперь с jQuery 1.6+ :

var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );

$('input').trigger(e);

(Если вы не используете jQuery UI, sub в соответствующем ключевом коде вместо этого.)


Я заставил его работать с клавиатурой.

$("#id input").trigger('keyup');

console.log( String.fromCharCode(event.charCode) );

Мне не нужно отображать символ, я думаю.







keypress