Javascript JS-选择输入字段后禁用Eventlistener
我当前正在向文档中添加EventListener。使用以下代码,这项功能非常有效:Javascript JS-选择输入字段后禁用Eventlistener,javascript,Javascript,我当前正在向文档中添加EventListener。使用以下代码,这项功能非常有效: document.addEventListener('keydown', function(event) { if(event.keyCode === 68){ socket.emit('keyPress', {inputId: 'right', state: true}); } else if(event.keyCode === 83){ socket.
document.addEventListener('keydown', function(event)
{
if(event.keyCode === 68){
socket.emit('keyPress', {inputId: 'right', state: true});
}
else if(event.keyCode === 83){
socket.emit('keyPress', {inputId: 'down', state: true});
}
else if(event.keyCode === 65){
socket.emit('keyPress', {inputId: 'left', state: true});
}
else if(event.keyCode === 87){
socket.emit('keyPress', {inputId: 'up', state: true});
}
});
document.addEventListener('keyup', function(event)
{
if(event.keyCode === 68){
socket.emit('keyPress', {inputId: 'right', state: false});
}
else if(event.keyCode === 83){
socket.emit('keyPress', {inputId: 'down', state: false});
}
else if(event.keyCode === 65){
socket.emit('keyPress', {inputId: 'left', state: false});
}
else if(event.keyCode === 87){
socket.emit('keyPress', {inputId: 'up', state: false});
}
});
但一旦我选择一个输入字段并键入包含W、a、S、D的内容,就会触发EventListener
选择输入字段后,是否有方法禁用eventListener?您需要禁用输入中的事件冒泡。大概是这样的:
input.addEventListener('keyup', function (e) {
e.stopPropagation();
}, false);
input.addEventListener('keydown', function (e) {
e.stopPropagation();
}, false);
因此,使用上面的代码,您将禁用
keyup
和keydown
事件冒泡,并且输入的任何父节点都不会听到这些事件您需要禁用输入中的事件冒泡。大概是这样的:
input.addEventListener('keyup', function (e) {
e.stopPropagation();
}, false);
input.addEventListener('keydown', function (e) {
e.stopPropagation();
}, false);
因此,使用上面的代码,您将禁用keyup
和keydown
事件冒泡,并且输入的任何父节点都不会听到这些事件是检查是什么,如果是您的输入元素,只需返回,如果不是,则让代码继续
document.addEventListener('keydown', function(event) {
if(event.target === someReferenceToYourElement){
return;
}
//rest of code
});
是,检查是什么,如果是您的输入元素,只需返回,如果不是,则让代码继续
document.addEventListener('keydown', function(event) {
if(event.target === someReferenceToYourElement){
return;
}
//rest of code
});
您可以在输入的焦点上添加事件侦听器
document.getElementsByTagName('input').addEventListener('focus', function(e) {
e.StopPropagation();
}
您可以在输入的焦点上添加事件侦听器
document.getElementsByTagName('input').addEventListener('focus', function(e) {
e.StopPropagation();
}
我建议你这样做:
$('document').keypress(function(event) {
if (event.which == 65) { // A
// Do your stuff
}
})
此代码与您的相同,但位于整个DOM上
$('#input').val.indexOf('a')
此代码将检查您的字段是否包含字母A,可以是字符串“abcd”或“bar”等
如果要检查字段何时失去焦点,还可以检查jquery的事件模糊,我建议您这样做:
$('document').keypress(function(event) {
if (event.which == 65) { // A
// Do your stuff
}
})
此代码与您的相同,但位于整个DOM上
$('#input').val.indexOf('a')
此代码将检查您的字段是否包含字母A,可以是字符串“abcd”或“bar”等
如果要检查字段何时失去焦点,还可以检查jquery的事件模糊如何检查keyup/keydown监听器中的焦点?可能会添加一个类,如
.ignoreInput
,您可以将其添加到元素中,然后检查当前关注的元素是否具有类似document.activeElement
的类(假设您希望侦听器在输入模糊后重新开始工作)input.addEventListener('focus',function(){document.removeEventListener('keydown'..
?检查keyup/keydown监听器内部的焦点如何?也许可以添加一个类,如.ignoreInput
,您可以将其添加到元素中,然后检查当前焦点元素是否具有类似document.activeElement
的类(假设您希望侦听器在输入模糊后重新开始工作)input.addEventListener('focus',function(){document.removeEventListener('keydown'..
?这符合我的要求。如果选择了输入,我需要禁用多个eventlistener。只是一个问题,如果我们仍然希望启用一个侦听器但禁用其他侦听器,该怎么办?这符合我的要求。如果选择了输入,我需要禁用多个eventlistener。只是一个问题,如果我们仍然希望启用一个侦听器但禁用ot,该怎么办她的?这就是我要找的。这样你可以检查目标是否是输入元素并返回,这样你就不需要知道任何关于输入元素的信息。这就是我要找的。这样你可以检查目标是否是输入元素并返回,这样你就不需要知道任何关于输入元素的信息。