我的脚本会执行一些操作(例如停止一个音频播放器)以防用户按空格键:
$('html').keydown(function(e){
if(e.keyCode == 32){
// Stop the audio player
}
}
但问题出现的时候,用户试图在textarea中写一条消息,因为上一个函数执行了(而且非常讨厌)...如果是用户,怎么办才能不执行该函数在textarea或其他元素上写一条消息?
答案 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')
}
});
})
答案 4 :(得分:0)
试试这个:)
$('html').keydown(function(e) {
if(e.keyCode == 32){
// stop the music player
}
});
$('input, textarea').keydown(function(e) {
e.stopPropagation();
});
答案 5 :(得分:0)
这样的事情:
if语句中的代码仅在您没有聚焦在文本区域或输入内时才会触发。
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' );
}
});