Javascript 屏幕键盘上的反应不会触发更改事件

Javascript 屏幕键盘上的反应不会触发更改事件,javascript,reactjs,events,Javascript,Reactjs,Events,我已经创建了一个屏幕键盘(osk),用于一个kiosk风格的React应用程序。osk按照它应该的方式工作,并将所需的文本等输入到适当的元素中。我的问题是,用osk输入文本不会触发目标上的更改事件,因此我的onChange处理程序永远不会被调用。我尝试在使用osk插入我的文本后触发更改事件,如下所示,但是,我现有的onChange处理程序不会像使用键盘输入文本那样被调用。处理这个问题的最佳“反应”方式是什么?PS-我没有使用jQuery。谢谢 //update element text from

我已经创建了一个屏幕键盘(osk),用于一个kiosk风格的React应用程序。osk按照它应该的方式工作,并将所需的文本等输入到适当的元素中。我的问题是,用osk输入文本不会触发目标上的更改事件,因此我的onChange处理程序永远不会被调用。我尝试在使用osk插入我的文本后触发更改事件,如下所示,但是,我现有的onChange处理程序不会像使用键盘输入文本那样被调用。处理这个问题的最佳“反应”方式是什么?PS-我没有使用jQuery。谢谢

//update element text from osk
this.props.target.value = (this.props.target.value + btnText);

//attempt to trigger change event
this.props.target.dispatchEvent(new Event('change'));

//input updated from osk
const ce = React.createElement;

ce("input", {
      id: "PasswordText",
      type: "password",
      data: "text",
      onClick: this.clickHandler,
      defaultValue: this.props.accessPassword,
      onChange:this.changeHandler})

//change handler
changeHandler(e) {
    this.setState({
        stateObject: e.target.value
    });
}

我在Chrome的虚拟键盘扩展上也遇到了同样的问题。发现react听到的是
输入
事件,而不是实际的
更改
事件。
在您的情况下,解决方案是触发此事件,在我的情况下,我选择了通用虚拟键盘,并寻找更面向react的解决方案(即虚拟键盘react的库)

有点晚了,但我希望这对其他人有所帮助。

干杯兄弟

我对Chrome的虚拟键盘扩展也有同样的问题。发现react听到的是
输入
事件,而不是实际的
更改
事件。
在您的情况下,解决方案是触发此事件,在我的情况下,我选择了通用虚拟键盘,并寻找更面向react的解决方案(即虚拟键盘react的库)

有点晚了,但我希望这对其他人有所帮助。

干杯兄弟

问题的关键在于,不倾听这些事件(或不信任它们)的反应

要触发输入事件,必须编辑扩展名:

  • 查找系统上存储扩展的目录

  • 使用您喜爱的编辑器打开
    script.js

  • 找到
    virtualKeyboardChromeExtension\u单击
    函数,并在switch语句后添加以下内容:

    function virtualKeyboardChromeExtension_click(key, skip) {
    [...]
        switch (key) { // <- find the switch statement
            [...]
        }  // <- after the close brace add the following 4 lines code:
        var inputEvent = new Event('input', {bubbles:true});
        if(typeof virtualKeyboardChromeExtensionClickedElem !== "undefined") {
            virtualKeyboardChromeExtensionClickedElem.dispatchEvent(inputEvent);
        }
        // you are done
    
    功能虚拟键盘chromeextension_单击(键,跳过){
    [...]
    
    切换(键){/作为标记点,该问题是由于没有倾听这些事件(或不信任它们)而导致的

    要触发输入事件,必须编辑扩展名:

    • 查找系统上存储扩展的目录

    • 使用您喜爱的编辑器打开
      script.js

    • 找到
      virtualKeyboardChromeExtension\u单击
      函数,并在switch语句后添加以下内容:

      function virtualKeyboardChromeExtension_click(key, skip) {
      [...]
          switch (key) { // <- find the switch statement
              [...]
          }  // <- after the close brace add the following 4 lines code:
          var inputEvent = new Event('input', {bubbles:true});
          if(typeof virtualKeyboardChromeExtensionClickedElem !== "undefined") {
              virtualKeyboardChromeExtensionClickedElem.dispatchEvent(inputEvent);
          }
          // you are done
      
      功能虚拟键盘chromeextension_单击(键,跳过){
      [...]
      开关(钥匙){//