Нет, вы скучаете, поняли концепцию. Это не так, как это должно работать. Триггер будет вызывать только обработчик событий. Это на самом деле не будет печатать ключ. Если вы хотите смоделировать эффект печати ключа, просто добавьте ключ к введенному значению и одновременно инициируйте событие.
Надя Алрамли
Интересно, я этого не знал. В таком случае, можете ли вы сказать мне, будет ли запуск события также запускать его для библиотек, не являющихся jquery? например, если у меня настроен onKeydown на обычном JS, будет ли он захватывать мое «поддельное» событие?
mkoryak
2
да, если был установлен onkeydown = '...' на обычном js. Это будет вызвано поддельным событием. Я не был уверен в этом. Но я сделал быстрый тест, и это сработало.
Надя Алрамли
2
@ Надя Спасибо за это! Я перечитал все ответы, задаваясь вопросом, почему вещи не работали, прежде чем понять, что мои ожидания не оправдались. Я подозреваю, что многие другие люди будут иметь такие же заблуждения.
mikemaccana
3
Два года спустя ... читая страницу, кажется, что определенным способом является: $ ('input # search'). Trigger ($. Event ('keydown', {which: $. Ui.keyCode.ENTER, keyCode: $ .ui.keyCode.ENTER}));
molokoloco
Ответы:
365
Если вы хотите вызвать событие нажатия клавиши или нажатия клавиши, то все, что вам нужно сделать, это:
var e = jQuery.Event("keydown");
e.which =50;// # Some key code value
$("input").trigger(e);
Очень хороший ответ. Стоит отметить, что jQuery.Event доступен для jQuery 1.3 или выше. Это стало актуальным в этом вопросе: stackoverflow.com/questions/1823617/…
artlung
8
Это не работает для меня с ползунком пользовательского интерфейса jQuery. Я должен был установить e.keyCode как ответ OreiA ниже.
crizCraig
2
Между прочим, у меня был больший успех с 'keyup' для моего приложения
Просто не забудьте заменить «keyCode» на «который», а также.
Ричард Нинабер
Да, вы должны определить, какой и keyCode должен быть безопасным (если прослушиватель событий проверяет e.keyCode, он будет работать только в том случае, если вы определите keyCode при создании объекта jQuery.Event)
jackocnr
1
jQuery нормализует, какой / keyCode, так что включение любого должно делать оба.
Найджел Анхель
+1 за ссылку на api.jquery.com; и текущие версии jQuery не нормализуют, какой / keyCode, поэтому вы должны предоставить оба для безопасности
Виктор
2
@SamuelLindblom Я должен был написать это более ясно: jQuery не нормализует свойства события, передаваемые через .trigger(jQuery.Event('name', props)). Посмотрите на пример jsfiddle.net/9ggmrbpd/1 - свойства сработавшего события передаются как есть. Исходный код: github.com/jquery/jquery/blob/master/src/event.js#L739
Виктор,
68
Реальный ответ должен включать 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, и в этом случае просто определить оба.
В случае, если вам нужно учитывать текущий курсор и выделение текста ...
Это не работает для меня для приложения AngularJS на Chrome. Как указывает Надя в исходных комментариях, персонаж никогда не виден в поле ввода (по крайней мере, это был мой опыт). Кроме того, предыдущие решения не учитывают текущий выбор текста в поле ввода. Мне пришлось использовать замечательную библиотеку jquery-selection .
У меня есть настраиваемая экранная цифровая клавиатура, которая заполняет несколько полей ввода. Мне пришлось...
На фокусе, сохраните lastFocus.element
При размытии сохранить текущий выделенный текст (начать и остановить)
var pos = element.selection('getPos')
lastFocus.pos ={ start: pos.start, end: pos.end}
Это, похоже, не работает, потому что при этом используется аргумент extraParameters, который ничего не устанавливает внутри аргумента события, но добавляет дополнительные аргументы к обратному вызову обработчика события.
Ответы:
Если вы хотите вызвать событие нажатия клавиши или нажатия клавиши, то все, что вам нужно сделать, это:
источник
Чуть более лаконично теперь с jQuery 1.6+ :
(Если вы не используете jQuery UI, вместо этого введите соответствующий код клавиши.)
источник
.trigger(jQuery.Event('name', props))
. Посмотрите на пример jsfiddle.net/9ggmrbpd/1 - свойства сработавшего события передаются как есть. Исходный код: github.com/jquery/jquery/blob/master/src/event.js#L739Реальный ответ должен включать keyCode:
Хотя на сайте jQuery написано, что и keyCode нормализованы, они очень сильно ошибаются. Всегда безопаснее выполнять стандартные кросс-браузерные проверки для e.which и e.keyCode, и в этом случае просто определить оба.
источник
e.keyCode = e.which = 50;
в одной строке было бы приятнее. :)keyCode
не работает. Пришлось установить оба, чтобы это работалоЕсли вы также используете jQuery UI, вы можете сделать это так:
источник
Я заставил это работать с keyup.
источник
Хорошо, для меня, что работа с этим ...
источник
В случае, если вам нужно учитывать текущий курсор и выделение текста ...
Это не работает для меня для приложения AngularJS на Chrome. Как указывает Надя в исходных комментариях, персонаж никогда не виден в поле ввода (по крайней мере, это был мой опыт). Кроме того, предыдущие решения не учитывают текущий выбор текста в поле ввода. Мне пришлось использовать замечательную библиотеку jquery-selection .
У меня есть настраиваемая экранная цифровая клавиатура, которая заполняет несколько полей ввода. Мне пришлось...
При размытии сохранить текущий выделенный текст (начать и остановить)
Когда кнопка на моей клавиатуре нажата:
источник
Вы хотите сделать это в одной строке, которую вы можете использовать
источник
console.log( String.fromCharCode(event.charCode) );
нет необходимости наносить на карту характер, я думаю.
источник
Это может быть достигнуто как это документы
источник