最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Trigger an event on click or when enter key is pressed [JavaScript] - Stack Overflow

programmeradmin3浏览0评论

I wrote this code and only the click event is working, but key event doesn't. Can anyone explain to me why?

Btn_List.addEventListener("keypress", function(e) {

	var key = e.keyCode();

	if (key === 13) {

		function OnKeyEnterPressDoThis() {
			Input_Tarea();
			showTheNmbrOfListElmts();
			orderAlphaFukkabossList();
		}

	}

});

// Agregar Tarea
Btn_List.addEventListener("click", function() {
	Input_Tarea();
	showTheNmbrOfListElmts();
	orderAlphaFukkabossList();
});

I wrote this code and only the click event is working, but key event doesn't. Can anyone explain to me why?

Btn_List.addEventListener("keypress", function(e) {

	var key = e.keyCode();

	if (key === 13) {

		function OnKeyEnterPressDoThis() {
			Input_Tarea();
			showTheNmbrOfListElmts();
			orderAlphaFukkabossList();
		}

	}

});

// Agregar Tarea
Btn_List.addEventListener("click", function() {
	Input_Tarea();
	showTheNmbrOfListElmts();
	orderAlphaFukkabossList();
});

Share Improve this question edited May 12, 2017 at 5:58 zer00ne 44.5k6 gold badges48 silver badges80 bronze badges asked Apr 23, 2017 at 17:59 Emmanuel RuizEmmanuel Ruiz 331 silver badge6 bronze badges 1
  • o my... god deam works XD: writted.addEventListener("keypress", function(e){ var key = e.keyCode; if (key === 13) { Input_Tarea(); showTheNmbrOfListElmts(); AlphabeticOrderInTheList(); } }, false); – Emmanuel Ruiz Commented May 12, 2017 at 6:50
Add a ment  | 

3 Answers 3

Reset to default 2

You're not calling OnKeyEnterPressDoThis inside the keypress event listener, you're declaring the function. Move the function out of the event listener and call it when the event is called.

Also use e.keyCode instead of e.keyCode(); since keyCode it's not a function.

In some browsers e.keyCode is undefined, you have to use e.which in those cases.

So something like this should add a little of browser support:

var key = e.which || e.keyCode || 0;

Code:

function OnKeyEnterPressDoThis() {
    Input_Tarea();
    showTheNmbrOfListElmts();
    orderAlphaFukkabossList();
}

Btn_List.addEventListener("keypress", function(e) {

    var key = e.which || e.keyCode || 0;

    if (key === 13) {
        OnKeyEnterPressDoThis();
    }

});

// Agregar Tarea
Btn_List.addEventListener("click", OnKeyEnterPressDoThis);

try e.which

 Btn_List.addEventListener("keypress" , function(e){ 
    var key = e.which;
                   alert(key)
 });
 Btn_List.addEventListener("click" , function(e){ 
      alert('ff') 
  });
  1. You should scan for e.which, since some browsers don't honor e.keyCode
  2. You should use e.preventDefault() because an enter on a button triggers a click event (for accessibility reasons)
  3. You should avoid using keypress and instead use the keydown or keyup events in order to avoid double-events (as mentioned in #2 above)

var Btn_List = document.querySelector('button');

Btn_List.addEventListener("keydown", function(e) {

  var key = e.which && e.which || e.keyCode();

  if (key !== 9)
    e.preventDefault(); // allow tab

  if (key === 13) {
    console.log('Enter pressed');
    (function OnKeyEnterPressDoThis() {
      Input_Tarea();
      showTheNmbrOfListElmts();
      orderAlphaFukkabossList();
    }());
  }

});

// Agregar Tarea
Btn_List.addEventListener("click", function(e) {
  console.log(e.type);
  Input_Tarea();
  showTheNmbrOfListElmts();
  orderAlphaFukkabossList();
});

function Input_Tarea() {
  console.log('Input_Tarea');
}

function showTheNmbrOfListElmts() {
  console.log('showTheNumbrOfListElmts');
}

function orderAlphaFukkabossList() {
  console.log('orderAlphaFukkabossList');
}
<button>Click</button>
<button onClick="console.clear()">clear console</button>

发布评论

评论列表(0)

  1. 暂无评论