Javascript 在文本框中触发事件侦听器

Javascript 在文本框中触发事件侦听器,javascript,Javascript,我有一个网页,上面有一个文本框,每次你释放一个键,它就会“检查”它是否与正确的单词匹配(我想)。到目前为止,我所做的是用“.value”更改文本框的值。现在我想触发那个监听器来检查文本框的有效性,但我无法让它工作。这是HTML <input type="text" no-translate="true" class="word-textbox word-normal" data-bind="value: currentWord().wordEntry, keyPress: currentW

我有一个网页,上面有一个文本框,每次你释放一个键,它就会“检查”它是否与正确的单词匹配(我想)。到目前为止,我所做的是用“.value”更改文本框的值。现在我想触发那个监听器来检查文本框的有效性,但我无法让它工作。这是HTML

<input type="text" no-translate="true" class="word-textbox word-normal" data-bind="value: currentWord().wordEntry, keyPress: currentWord().OnKeyPress, css: currentWord().wordStatus, enable: enableTextboxes">
这给了我一个错误“normalTextBox.trigger不是函数”。
此外,侦听器被称为keyUp。

文本框元素本机没有
触发器功能。您需要使用
dispatchEvent
。这里有一个我以前用过的小片段

function triggerEvent(el, type) {
  if ('createEvent' in document) {
        // modern browsers, IE9+
        var e = document.createEvent('HTMLEvents');
        e.initEvent(type, false, true);
        el.dispatchEvent(e);
  } else {
        // IE 8
        var e = document.createEventObject();
        e.eventType = type;
        el.fireEvent('on'+e.eventType, e);
  }
}
在你的情况下,你会使用

var normalTextBox = document.getElementsByClassName("word-textbox word-normal")[0];
var normalTextButton = document.getElementsByClassName("plainbtn alt blue selected")[0];
normalTextBox.value = normalTextButton.innerHTML;
triggerEvent(normalTextBox, "keyup");
//or
triggerEvent(normalTextBox, "change");

trigger
是一个jQuery函数,而不是一个原生JS函数。是的,我确实是这样做的。谢谢。我想他要的是
change
event而不是
keyup
var normalTextBox = document.getElementsByClassName("word-textbox word-normal")[0];
var normalTextButton = document.getElementsByClassName("plainbtn alt blue selected")[0];
normalTextBox.value = normalTextButton.innerHTML;
triggerEvent(normalTextBox, "keyup");
//or
triggerEvent(normalTextBox, "change");