I read many post how to move from one input to another on Enter
keypress. Many contains solution with custom directive which is not good, because I want that this works out of the box (without implementing directive on every component).
I simply try to call dispatchEvent
with key Tab
. But it is not working. It seems so simple. I really hope I am not doing something stupid and someone can explain to me, why this stackblitz doesn't work.
<input (keyup)="handleChange($event)">
public handleChange(e: KeyboardEvent)
{
if (e && e.keyCode === 13)
{
e.srcElement.dispatchEvent(new KeyboardEvent('keydown', { key: '9' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keypress', { key: '9' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keyup', { key: '9' }));
e.target.dispatchEvent(new KeyboardEvent('keydown', { key: '9' }));
e.target.dispatchEvent(new KeyboardEvent('keypress', { key: '9' }));
e.target.dispatchEvent(new KeyboardEvent('keyup', { key: '9' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keydown', { code: '9' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keypress', { code: '9' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keyup', { code: '9' }));
e.target.dispatchEvent(new KeyboardEvent('keydown', { code: '9' }));
e.target.dispatchEvent(new KeyboardEvent('keypress', { code: '9' }));
e.target.dispatchEvent(new KeyboardEvent('keyup', { code: '9' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keypress', { key: 'Tab' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keyup', { key: 'Tab' }));
e.target.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' }));
e.target.dispatchEvent(new KeyboardEvent('keypress', { key: 'Tab' }));
e.target.dispatchEvent(new KeyboardEvent('keyup', { key: 'Tab' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keydown', { code: 'Tab' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keypress', { code: 'Tab' }));
e.srcElement.dispatchEvent(new KeyboardEvent('keyup', { code: 'Tab' }));
e.target.dispatchEvent(new KeyboardEvent('keydown', { code: 'Tab' }));
e.target.dispatchEvent(new KeyboardEvent('keypress', { code: 'Tab' }));
e.target.dispatchEvent(new KeyboardEvent('keyup', { code: 'Tab' }));
console.log("Should move. Event was dispatched on", e.target, e.srcElement);
}
}