如果单击某些div,则不执行keydown函数

时间:2014-09-16 11:12:17

标签: javascript jquery html function keydown

我的脚本会执行一些操作(例如停止一个音频播放器)以防用户按空格键:

$('html').keydown(function(e){
   if(e.keyCode == 32){
       // Stop the audio player
   }
}

但问题出现的时候,用户试图在textarea中写一条消息,因为上一个函数执行了(而且非常讨厌)...如果是用户,怎么办才能不执行该函数在textarea或其他元素上写一条消息?

6 个答案:

答案 0 :(得分:1)

当用户聚焦某些控件时,您需要跳过此示例,如果用户输入文本区域,此示例将阻止播放器停止。

$(function () {
            $(document).keypress(function (e, f) {

                var tagName = e.target.tagName.toLowerCase();
                if (tagName != 'textarea') {
                    if (e.keyCode == 32) {
                        console.log('Stop Playing');
                    }
                }
            });
        });

跳这有帮助。

答案 1 :(得分:0)

试试这个,

$('#textAreaId').keypress(function(e){
    e.preventDefault();
});

答案 2 :(得分:0)

您应检查事件的发件人,如果发件人是其他控件,则音频播放器会忽略该呼叫,否则请停止播放。

$('html').keydown(function(e){
   var senderID = $(event.target).attr('id');
   if(senderID == 'myAudioPlayerID' && e.keyCode == 32){
       // Stop the audio player
   }
}

答案 3 :(得分:0)

在textarea上按空格键时,在事件对象上使用 stopPropagation 方法。

$(document).ready(function(){
    $("#testTextArea").keydown(function(e){
       if(e.keyCode == 32){
           e.stopPropagation();
       }
    });

    $("#container").keydown(function(e){
       if(e.keyCode == 32){
           alert('Player Stoped/Started')
       }
    });
})

小提琴http://jsfiddle.net/b0u3z8pg/16/

答案 4 :(得分:0)

试试这个:)

$('html').keydown(function(e) {
    if(e.keyCode == 32){
        // stop the music player
    }
});
$('input, textarea').keydown(function(e) {
    e.stopPropagation();
});

答案 5 :(得分:0)

这样的事情:

if语句中的代码仅在您没有聚焦在文本区域或输入内时才会触发。

jsfiddle demo

HTML:

<textarea></textarea>
<input type="text">

jQuery的:

var exclude = $("textarea, input");

$('html').on("keydown", function( e ) {

    if ( e.keyCode == 32 && !exclude.is(':focus') ) {
       console.log( 'Space pressed outside input or text area' );
    }

});