我有一个带有文本框的网页,每次你发布密钥时都会检查"如果它与听众匹配正确的单词(我认为)。到目前为止我所做的是使用" .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">
现在是我的javascript。
var normalTextBox = document.getElementsByClassName("word-textbox word-normal")[0];
var normalTextButton = document.getElementsByClassName("plainbtn alt blue selected")[0];
normalTextBox.value = normalTextButton.innerHTML;
normalTextBox.trigger();
这给了我错误&#34; normalTextBox.trigger不是一个函数&#34;。 此外,监听器称为keyUp。
答案 0 :(得分:1)
文本框元素本身没有trigger
函数。您需要使用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");