使用JQuery解除对文本输入的自定义键事件的绑定

时间:2018-06-11 18:32:49

标签: jquery html5

按下ENTER键时,我将函数绑定到keydown事件。我希望此函数在ENTER键盘上触发,除非用户键入id为input_area的textarea:

$(document).keydown(function(e) {
  if (e.keyCode == 32 && e.target != $("#input_area")) {
  scroll_to_location();
  }
});

我尝试用$(document).unbind('keydown')取消绑定整个keydown,但这对整个文档来说完全没有,而且只是在文本输入的短暂时间内。

是否有一种使用JQuery解析textarea输入事件的简洁方法?

2 个答案:

答案 0 :(得分:1)

我建议像这样使用on / off来进行bind / unbind:

$(document).on('keydown', '#input_area', function(e) {
   if(e.which == 13) {
      console.log("enterPressed");
   }
});

$(document).on('click', '#unbindBtn', function(e) {
   $(document).off('keydown', '#input_area');
});
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  </head>
  <body>
    <input id="input_area" placeholder="Tap Enter" />
    <button id="unbindBtn">Unbind</button>
  </body>
</html>

答案 1 :(得分:1)

您可以检查originalEvent目标ID,以查看它是否应该被忽略。

$(document).on('keydown', function (e) {
    if (e.originalEvent.target.id === 'input_area') return;

    //do logic
});