在文本输入字段中检测Enter键


299

我正在尝试执行一个功能,如果在特定输入上按下Enter键。

我做错了什么?

$(document).keyup(function (e) {
    if ($(".input1").is(":focus") && (e.keyCode == 13)) {
        // Do something
    }
});

有没有更好的方法可以做到这一点,如果按Enter键可以.input1执行功能?


Answers:


499
$(".input1").on('keyup', function (e) {
    if (e.keyCode === 13) {
        // Do something
    }
});


//keyup not compatible with Jquery select(), Keydown is.

您在哪个浏览器中进行测试?我认为IE的较旧版本不会触发文档上的keyup事件(尽管对此不确定)。
约瑟夫·席尔伯

2
您的代码无法正常工作,因为您使用了.is(),并且需要===而不是==。有关更多详细信息,请参见我的答案。
wesbos 2011年

6
@jQuerybeast 不需要,它event.keyCode是一个Number,因此JavaScript将使用==或采取相同的步骤===
Alex

7
e。宣布被认为是更有用的跨浏览器
Mohammad eslahi sani 2015年

2
,和,已弃用属性whichdeveloper.mozilla.org/ en-US/docs/Web/API/KeyboardEvent ,请在答案中添加实际信息。codecharCodekeyCode
萨赛(Sasay),

120

event.key ===“ Enter”

最近更新,更清洁:使用event.key没有更多的任意数字代码!

const node = document.getElementsByClassName(".input")[0];
node.addEventListener("keyup", function(event) {
    if (event.key === "Enter") {
        // Do work
    }
});

如果必须使用jQuery:

$(document).keyup(function(event) {
    if ($(".input1").is(":focus") && event.key == "Enter") {
        // Do work
    }
});

Mozilla文件

支持的浏览器


6
普通javascript版本的荣誉,不确定为什么所有其他原因都在jquery中
Captain Fantastic

7
因为,OP将他的示例代码放在jQuery中,并且(以及JavaScript)jQuery被标记了。
Tigerrrrr

44
$(document).keyup(function (e) {
    if ($(".input1:focus") && (e.keyCode === 13)) {
       alert('ya!')
    }
 });

或者只是绑定到输入本身

$('.input1').keyup(function (e) {
    if (e.keyCode === 13) {
       alert('ya!')
    }
  });

要确定您需要哪个keyCode,请使用网站http://keycode.info


谢谢。我学到新东西了。顺便说一句,我经常使用.is(),所以这不是逻辑,就是无法正常工作。还有==,对于其他情况,我再次使用了两个==
jQuerybeast 2011年

np,您应该始终使用===
wesbos 2011年

12

尝试执行此操作以检测Enter文本框中按下的键。

$(function(){

$(".input1").keyup(function (e) {
    if (e.which == 13) {
        // Enter key pressed
    }
 });

});

6

回答这个问题可能为时已晚。但是以下代码只是阻止Enter键。只需复制粘贴即可。

        <script type="text/javascript"> 
        function stopRKey(evt) { 
          var evt = (evt) ? evt : ((event) ? event : null); 
          var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
          if ((evt.keyCode == 13) && (node.type=="text"))  {return false;} 
        } 

        document.onkeypress = stopRKey; 

        </script>

6

我发现最好的方法是使用keydown(这keyup对我来说效果不好)。

注意:我也禁用了表单提交,因为通常当您想按Enter键时要执行一些操作时,您唯一不喜欢的就是提交表单:)

$('input').keydown( function( event ) {
    if ( event.which === 13 ) {
        // Do something
        // Disable sending the related form
        event.preventDefault();
        return false;
    }
});

event.keyCode已过时event.which是没有,所以这样比较好
亚历克斯

3

适用于我的解决方案如下

$("#element").addEventListener("keyup", function(event) {
    if (event.key === "Enter") {
        // do something
    }
});

1

尝试执行此操作以检测文本框中按下的Enter键。

$(document).on("keypress", "input", function(e){
    if(e.which == 13){
        alert("Enter key pressed");
    }
});

演示


0
 $(document).ready(function () {
        $(".input1").keyup(function (e) {
            if (e.keyCode == 13) {
                // Do something
            }
        });
    });

0

该代码为我处理了整个站点中的所有输入。它会检查INPUT字段内的ENTER KEY,并且不会在TEXTAREA或其他地方停止。

$(document).on("keydown", "input", function(e){
 if(e.which == 13){
  event.preventDefault();
  return false;
 }
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.