Javascript 将文本框绑定到';输入';钥匙

Javascript 将文本框绑定到';输入';钥匙,javascript,jquery,html,Javascript,Jquery,Html,我需要将键盘上的“enter”键绑定到特定的javascript方法,但仅当某个文本字段处于焦点时 <input id="post" type="text" style="width:400px;"/> 我该怎么做 我知道您可以使用具有提交操作的表单和内容,但是当上面的input字段处于焦点时,我可以将“enter”键绑定到特定的函数吗 $("#post").focus(function() { $(this).data("hasfocus", true); });

我需要将键盘上的“enter”键绑定到特定的javascript方法,但仅当某个文本字段处于焦点时

<input id="post" type="text" style="width:400px;"/>

我该怎么做

我知道您可以使用具有提交操作的表单和内容,但是当上面的
input
字段处于焦点时,我可以将“enter”键绑定到特定的函数吗

$("#post").focus(function() {
    $(this).data("hasfocus", true);
});

$("#post").blur(function() {
    $(this).data("hasfocus", false);
});

$(document.body).keyup(function(ev) {
    // 13 is ENTER
    if (ev.which === 13 && $("#post").data("hasfocus")) {
        ...
    }
});

我建议您直接在
$(“#post”)
输入上绑定ENTER keyup事件,而不是在整个页面上侦听事件。

只需将onkeyup事件绑定到相关输入即可。您根本不需要担心检查焦点,因为根据定义,输入只有在有焦点时才会接收keyup事件

我假设JQuery是可以的,因为您在问题中包含了标记,所以在您的文档就绪处理程序中执行以下操作:

$("#IDforyourcontrol").keyup(function(ev) {
   // 13 is ENTER
   if (ev.which === 13 && /*whatever other conditions you care about*/) {
      // do something
   }
}); 

“根据定义,输入只有在有焦点时才会接收键控事件”严格来说不是真的。事件也可以在程序上被调度,所以输入可以在不聚焦时接收密钥事件(对于其他元素上的许多事件也有冒泡和捕获阶段)。但是,向输入中添加一个键控侦听器应该足以满足OP的要求。好吧,当然,我没有考虑通过编程触发的事件,尽管似乎不太可能有人希望通过编程方式触发enter键的键控,并将其与用户操作区分开来。尽管如此,我认为我的主要观点是正确的,出于这个目的,你通常不需要担心检查焦点在哪里。Raynos的回答也解释了如何允许焦点,所以我想它更完整地回答了OP,尽管我不会将事件绑定到document.body(但我自己从来没有需要检查过这种类型的事件的焦点)。回答好,含蓄,性能好。我在输入本身上使用它
,然后
myFunction(e){if(e.which==13…}
如果您使用一个函数来做其他事情,比如我记得抛出
e.preventDefault();
在函数调用之前插入,以防止表单被提交。您建议将其绑定到#post only,然后编写一段代码来收听整个文档?我甚至不。。。