分离空格键和输入键的键盘

时间:2017-08-04 23:33:51

标签: javascript jquery

使用jQuery 3. +,如何在空格键 Enter 键触发的按钮上分离 keyup

我有这样的事情:

$("#MAIN").on("keyup", "#scrub-btn.buttonOn:focus", function(e){

var allthesekeys = ( e.which == 107 || e.which == 109 || e.which == 96 || e.which == 97 || e.which == 98 || e.which == 99 || e.which == 100 || e.which == 101 || e.which == 102 || e.which == 103 || e.which == 104 || e.which == 105 );

        if ( allthesekeys ){

        // Do the scrubbing here...

        } else {

        $(this).off("keyup");

// Can we use $(this) here? Why are Space bar and Enter keys ignoring this?

        }
});

我必须重新考虑我的策略吗?任何指针赞赏。

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找e.preventDefault();

答案 1 :(得分:0)

您正在使用事件委派...

因此事件处理程序(函数)附加到#MAIN以处理#scrub-btn.buttonOn中发生的事件。

$(this)表示事件发生的元素... 委托处理事件的元素。这就是.off()无效的原因。

使用$("#MAIN")代替...或$(this).closest("#MAIN"),因为这是必须从事件侦听器中分离的元素。

CodePen

我很想建议一种更简洁的方法来写你的病情:

  var allthesekeys = [107,109,96,97,98,99,100,101,102,103,104,105];

  if ( allthesekeys.indexOf(e.which) > -1 ){...}

维护更容易...
;)