Как я могу добавить текст во вход через событие нажатия клавиш - PullRequest
0 голосов
/ 06 мая 2019

Я работаю в проекте Angular7 и хочу написать тест для имитации данных, набранных пользователем.Для этого я хочу вызвать некоторые события, чтобы заполнить вход для тестирования.
Пример: я хочу ввести «12.50» на входе, поэтому мне, вероятно, следует отправить 5 событий: "1", "2", ".", "5", "0"

Я знаю, что могу обновить значение элемента, но я действительно хочу проверить поведение клавиши (некоторые символы недопустимы, например, буквы).
Я проверил много примеров и вопросов, но ни один из них не помог мне.Есть ли возможность сделать такое мышление в JavaScript?

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете программно создать событие keydown с помощью KeyboardEvent и отправить его из элемента <input>.

Хотя это вызовет любые обработчики keydown , установленные для вашего элемента <input>, он не будет иметь эффект обновления значения <input> как реального keydown будет иметь.

const txt = document.querySelector('#txt');

txt.addEventListener('keydown', ev => console.log(`key=${ev.key}`));

const btn = document.querySelector('#btn');
btn.addEventListener('click', () => {
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '1'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '2'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '.'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '5'}));
  txt.dispatchEvent(new KeyboardEvent('keydown', {key: '0'}));
});
<input id="txt"/>
<button id="btn">Dispatch "12.50"</button>
...