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

jQu*_*ast 278 javascript jquery

如果在特定输入时按下输入,我正在尝试执行功能.

我做错了什么?

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

有没有更好的方法这样做,如果输入按下.input1执行功能?

Jos*_*ber 470

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


//keyup not compatible with Jquery select(), Keydown is.
Run Code Online (Sandbox Code Playgroud)

  • e.which被宣布为更有用的跨浏览器 (7认同)
  • @jQuerybeast它不是*需要*,而`event.keyCode`是一个`Number`,因此JavaScript将采用与`==`或`===`相同的步骤. (6认同)
  • 谢谢.你知道为什么我的代码不工作吗? (3认同)
  • 您的代码无法正常工作,因为您使用了.is()并且需要===而不是==.有关详细信息,请参阅我的答案. (2认同)
  • 属性 `which`、`code`、`charCode` 和 `keyCode` 已弃用 https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent,请在您的答案中添加实际信息。 (2认同)

Gib*_*olt 86

event.key ==="输入"

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

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

如果你必须使用jQuery:

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

Mozilla文档

支持的浏览器

  • 因为,OP 将他的示例代码放在 jQuery 中,并且(以及 JavaScript)jQuery 被标记。 (8认同)
  • 普通javascript版本的荣誉,不确定为什么其他所有人都在jquery中 (3认同)

wes*_*bos 44

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

或者只是绑定到输入本身

$('.input1').keyup(function (e) {
    if (e.keyCode === 13) {
       alert('ya!')
    }
  });
Run Code Online (Sandbox Code Playgroud)

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


Sha*_*oli 11

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

$(function(){

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

});
Run Code Online (Sandbox Code Playgroud)


Ind*_*r S 6

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

        <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>
Run Code Online (Sandbox Code Playgroud)


Roy*_*hoa 5

我找到的最好的方法是使用keydown(keyup对我来说效果不好).

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

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


小智 5

对我有用的解决方案如下

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