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

时间:2017-02-02 23:55:41

标签: javascript

我有一个带有文本框的网页,每次你发布密钥时都会检查"如果它与听众匹配正确的单词(我认为)。到目前为止我所做的是使用" .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。

1 个答案:

答案 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");