Javascript中的多事件侦听器

Javascript中的多事件侦听器,javascript,dom-events,Javascript,Dom Events,如何在同一初始化中添加多个事件侦听器 例如: <input type="text" id="text"> <button id="button_click">Search</button> 这是正常工作,但我想有另一个事件监听器为这个输入文件在同一个调用,如果可能的话,所以当用户点击进入或按下按钮,它触发相同的事件监听器 就一张纸条。用户需要关注输入字段以触发“回车”事件。尝试以下操作: function addMultipleEvents(element

如何在同一初始化中添加多个事件侦听器

例如:

<input type="text" id="text">
<button id="button_click">Search</button>
这是正常工作,但我想有另一个事件监听器为这个输入文件在同一个调用,如果可能的话,所以当用户点击进入或按下按钮,它触发相同的事件监听器

就一张纸条。用户需要关注输入字段以触发“回车”事件。

尝试以下操作:

 function addMultipleEvents(elements, events){
      var tokens = events.split(" ");
      if(tokens.length == elements.length){
          for(var i = 0; i< tokens.length; i++){
              elements[i].addEventListener(tokens[i], (e.which == 13 || e.which == 48)?myFunc:); //not myFunc()
          }
      }
 }

 var textObj = document.getElementById("textId");
 var btnObj = document.getElementById("btnId");
 addMultipleEvents([textObj,btnObj], 'click keyup');
函数添加多个事件(元素、事件){
var标记=events.split(“”);
if(tokens.length==elements.length){
for(var i=0;i
更新

  function addMultipleEvents(elements, events) {
      var tokens = events.split(" ");
      if (tokens.length == elements.length) {
          for (var i = 0; i < tokens.length; i++) {
              elements[i].addEventListener(tokens[i], myFunc); //not myFunc()
          }
      }
  }

  var textObj = document.getElementById("textId");
  var btnObj = document.getElementById("btnId");
  addMultipleEvents([btnObj, textObj], 'click keyup');

  function myFunc(e) {
      if (e.which == 13 || e.which == 1) {
          alert("hello");
      }
  }
函数添加多个事件(元素、事件){
var标记=events.split(“”);
if(tokens.length==elements.length){
for(var i=0;i

只需将函数绑定到2个侦听器,每个侦听器都是所需的元素:

document.getElementById('button_click').addEventListener('click', myFunc);
document.getElementById('text').addEventListener('keyup', keyupFunc);
如果用户按下enter键,然后执行其他功能,则新功能测试:

function keyupFunc(evt) {
    if(evt.keyCode === 13) // keycode for return
        myFunc();
}

使用JSFIDLE:

我认为最好的方法是使用for循环

const events=[“单击”,“鼠标悬停”]
对于(事件中的i){
document.getElementById(“按钮点击”).addEventListener(事件[i],()=>myFunc())

}
addEventListener的签名是('click',myFunc)。我不确定是否正确理解了这个问题,但是我猜OP意味着
enter
事件应该在
input
元素上触发,就好像
click
事件将由
按钮
元素触发一样…@SamuelCaillerie我需要的正是你所说的将
keyup
事件添加到按钮上,这似乎有点奇怪,不是吗?我认为两个处理程序的解耦(但只调用一个函数)更好…@SamuelCaillerie我不是在按钮中添加
keyup
事件。我将事件并行地添加到对象数组中。OP希望调用相同的函数。所以,我就这样做了。我的意思是将
if
条件保留在
myFunc
中,而不是将其保留在外。总的来说,它看起来很奇怪,但确实有效。“”)当我放置警报()时,未触发此键码顶部的inside keyupFunc警报被触发…因此它基本上进入函数内部,但不传递此if语句..有什么想法吗?明白了!问题出在
==
中,当我执行
==
时,一切都正常ok@user123_456:是的,对不起,我最初以为
keyCode
是一个字符串,但它是一个数字,所以
evt.keyCode===13
应该可以工作。但是你可以使用
==
它删除对类型的检查。。。
function keyupFunc(evt) {
    if(evt.keyCode === 13) // keycode for return
        myFunc();
}