JQuery (или чистый JS) имитировать клавишу ввода, нажатую для тестирования - PullRequest
55 голосов
/ 18 июля 2010

Как лучше всего смоделировать пользователя, нажав «ввод»? $ (element) .keypress (), кажется, не позволяет мне передавать фактическую нажатую клавишу.

Это для модульного тестирования.

Ответы [ 2 ]

88 голосов
/ 18 июля 2010

Демо Здесь

var e = jQuery.Event("keypress");
e.which = 13; //choose the one you want
e.keyCode = 13;
$("#theInputToTest").trigger(e);
51 голосов
/ 22 сентября 2013

Для тех, кто хочет сделать это в чистом javascript, посмотрите:


Устаревшие

Вы можете сделать что-то вроде (здесь для Firefox)

var ev = document.createEvent('KeyboardEvent');
// Send key '13' (= enter)
ev.initKeyEvent(
    'keydown', true, true, window, false, false, false, false, 13, 0);
document.body.dispatchEvent(ev);

Обновлено

Как комментирует Джо, KeyboardEvent теперь является стандартом.

Тот же пример для запуска ввода (keyCode 13):

const ke = new KeyboardEvent("keydown", {
    bubbles: true, cancelable: true, keyCode: 13
});
document.body.dispatchEvent(ke);

Вы можете использовать эту страницу , чтобы найти нужное событие клавиатуры.

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