在React应用程序中触发纯JS中的keydown

时间:2018-04-23 14:02:02

标签: javascript reactjs textarea keyboard-events

我正在尝试自动填充并在由React过度的textarea上触发'Enter'keydown事件。

输入自动填充由此答案解决,非常感谢作者: https://stackoverflow.com/a/46012210/7260325

剩下的唯一问题是'Enter'键触发。 由于这个React覆盖,可用于实现该标准的JS方法似乎不起作用。 任何人都知道如何触发这些事件?

有代码:

// I target my TextArea
var input_field = document.getElementsByClassName('MyTextArea')[0];

/*
 * Fill Textarea value
 * Tricks the React listener override
 */
var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, "value").set;
nativeInputValueSetter.call(input_field, 'Toto And His friendssss');

var ev2 = new Event('input', { bubbles: true});
input_field.dispatchEvent(ev2);

// I try to fire the keydown 'Enter key' event
var ev3 = document.createEvent('KeyboardEvent');
// Send key '13' (= enter)
ev3.initKeyEvent(
    'keydown', true, true, window, false, false, false, false, 13, 0);

input_field.dispatchEvent(ev3);

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

所以,
解决方案非常简单,但我将命令混合起来触发 对于包含潜在客户的链接,请访问@enguerranws。

var ev3 = document.createEvent('KeyboardEvent');
ev3.initKeyEvent(
    'keypress', true, true, window, false, false, false, false, 13, 0);
input_field.dispatchEvent(ev3);