Re[2]: [React] dispatchKeyEvent рулит. Но как нажать DEL или
От: VladCore  
Дата: 01.09.19 21:27
Оценка:
Здравствуйте, Ops, Вы писали:

Я сначала думал что dispatchKeyEvent не сможет "эмулировать" нажатие юникодных символов но это не так. Они правильно передаются в параметре text.
и в цикле его не нужно вызывать по одной букве за раз.

Единственная проблема если новое значение пустое, то старый текст просто выделяется весь, но text="" старое значение не удаляет.
Как передать DEL или BACKSPACE?

Ops>А если

Ops>
Ops>document.getElementById('Name').dispatchEvent(new Event('change'));
Ops>

Ops>?

Это что то не ты ты написал.

Дело не в том что в конструкторе нету параметра type
В ивенте надо не только тип но и остальные свойства — как минимум target.value
Во вторых наверно все же не type="change" а type=input с действием keydown и кодом клавиши, которое текущая внутренняя реализация маппит на SyntheticEvent с type="change" и target.value.

Вот эта привязка к реализации реакта мне и не нравится.

В третьих текущая реализация реакта в обработчике ивента трекает внутри предыдущее полное значение — в результате мешанина получается если задавать значение через input.value и потом досылать dispatchEvent вызовы.

А так input.focus() выделяет всё в input и потом первое нажатие клавиш удаляет всё предыдущее значение.
Если нужно пустое значение — это не будет работать. Надо как то backspace сначала послать. Вот в чем единственная проблема.



Ops>ЗЫ. Это не реакт, это браузер не генерирует событий при изменении value из кода.


Отредактировано 01.09.2019 21:38 VladCore . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.