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