jQuery: trigger keypress function on entire document but not inside inputs and textareas?

前端 未结 4 1790
无人共我
无人共我 2021-02-03 17:53

I have this …

$(document).keypress(function(e) {
        if ( e.keyCode === 119 ) // w
            doSomething();
    });

Wo when pressing \"w\

4条回答
  •  萌比男神i
    2021-02-03 18:07

    You'll have to filter out the elements after the event and not in the selector, like this

    $(document).on('keypress', function(e) {
        var tag = e.target.tagName.toLowerCase();
        if ( e.which === 119 && tag != 'input' && tag != 'textarea') 
            doSomething();
    });
    

    this checks the tagname of the event.target, the element the event originated from, and only fires the function if the event did not originate from an input or textarea.

提交回复
热议问题