javascript - 找不到我的 "addEventListener"函数的解决方案

标签 javascript html

我在尝试使用 addEventListener 时遇到了问题。 我确实尝试在网上找到解决方案,但我认为我的知识有限,无法选择合适的答案。

我尝试的是在这个例子中按下一个键时调用函数“addFile()”enter(13) 不幸的是没有任何反应。我可以通过稍微编辑 addFileOnKeyEvent(event) 将 onkeypress 属性添加到输入 “添加文件”,但我试图了解我的 eventListener 有什么问题。

我希望你能听懂我的解释,因为这是我的第一个问题。 :)

function addFile() {
  var x = document.getElementById("add-file").value;
  x = x + ".xml";
  var lbl = document.createElement("label");
  var node = document.createTextNode(x);
  lbl.appendChild(node);

  var element = document.getElementById("appendable");
  element.appendChild(lbl);
}

function addFileOnKeyEvent(event) {
  var evt = event.keyCode;
  var textField = document.getElementById("add-file").addEventListener("keypress", function() {
    if (evt == 13) {
      addFile();
    }
  });
}
<label>Dateien</label>
<input id="add-file" type="text" onclick="this.select();">
<button type="submit" onclick="addFile()">Hinzufügen</button>
<div class="data-display">
  <span id="appendable"></span>
</div>

最佳答案

起初,addFileOnKeyEvent() 从未在任何地方调用过。所以当你尝试添加文件时你必须调用它。或者您必须默认将事件绑定(bind)到文本字段。

也不需要将事件对象传递给 addFileOnKeyEvent()。 事件必须在 addEventListener 回调函数中捕获。

function addFile() {
  var x = document.getElementById("add-file").value;
  x = x + ".xml";
  var lbl = document.createElement("label");
  var node = document.createTextNode(x);
  lbl.appendChild(node);

  var element = document.getElementById("appendable");
  element.appendChild(lbl);
}

function addFileOnKeyEvent() {
  document.getElementById("add-file").addEventListener("keypress", function(event) {
    var evt = event.keyCode;
    if (evt == 13) {
      addFile();
    }
  });
}
// call the function here
addFileOnKeyEvent();

   // else just put the event handler part alone. The function is unnecessary here.
<label>Dateien</label>
<input id="add-file" type="text" onclick="this.select();">
<button type="submit" onclick="addFile()">Hinzufügen</button>
<div class="data-display">
  <span id="appendable"></span>
</div>

关于javascript - 找不到我的 "addEventListener"函数的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258954/

相关文章:

javascript - 当他们说 "compile"我的 js 代码时,那些 javascript 前端构建工具是什么意思?

javascript - 如何使用 AngularJS 将数据传递到不同的页面?

javascript - 仅在选项卡打开时执行 JS 代码

javascript - 循环淡入淡出句子中的单词

javascript - 通过传递 ID 获取输入类型

javascript - 如何使用jquery获取输入文件的值

javascript - jQuery,附加 HTML 字符串不起作用

javascript - Twilio 视频 : how to tell if a track is a screenshare?

html - 如何从网格中获取 'disconnect' 元素?

html - 坚持创建嵌套的下拉导航菜单