gpt4 book ai didi

javascript - jQuery 文档处理程序窃取输入字段中的按键

转载 作者:行者123 更新时间:2023-11-30 13:11:05 25 4
gpt4 key购买 nike

以前可能有人问过这个问题,但我找不到合适的搜索短语来定位它,无论是在这里还是在 intertubes 上。

我有一个使用键盘的游戏网页,所以使用 jQuery 我在文档中设置了处理程序:

$(document).keydown(myKeydown);
$(document).keyup(myKeyup);
$(document).blur(myBlur);

但现在任何在输入字段中写入的文本都会被文档事件处理程序窃取,并且只有在文档处理程序中未使用的字符才会到达输入。这些处理程序本质上是这样的:

function myKeydown(event)
{
if (event.which == 65)
{
console.log('a pressed');
return false;
}
return true;
}

现在假设我有一个文本输入框;如果我按下“a”以外的任何键,它会在输入中显示,但不会显示“a”(因为 myKeydown 通过返回 false 来“吃掉”它)。我可以在任何情况下返回 true,但是如果没有输入框被聚焦,我会得到奇怪的东西,比如“键入时搜索”,如果启用的话。

我尝试为输入框添加处理程序:

input.keydown(function() { console.log('down'); return false; });
input.keyup(function() { console.log('up'); return false; });
input.blur(function() { console.log('blur'); return false; });

通过这段代码,我得到了 console.logs,但当然按键没有到达盒子(因为我没有对按键进行任何操作)。我可以将这些事件发送到某个地方,以便相应的键出现在输入框中吗?

注意:有些人建议使用event.stopPropagation() 而不是return falsejQuery docs说:

Returning false from a handler is equivalent to calling both .preventDefault() and .stopPropagation() on the event object."

这正是我想要的:为了防止“键入时搜索”开始,我必须阻止默认操作,即在输入中键入并在页面上“键入时搜索”。

(另外,由于某些原因,keydown 事件处理程序在最新的 Firefox 上没有 stopPropagation() 函数。)

最佳答案

对 adeneo clean 进行评论:

function myKeydown(event)
{
    if (event.which == 65)
    {
        console.log('a pressed');
        event.stopPropagation();
    }
}
$(document).keydown(myKeydown);

sample

关于javascript - jQuery 文档处理程序窃取输入字段中的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com