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

IT技术 javascript jquery
2021-03-08 04:12:59

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

我做错了什么?

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

有没有更好的方法来做到这一点,如果在.input1do 功能上按下输入键

6个回答
$(".input1").on('keyup', function (e) {
    if (e.key === 'Enter' || e.keyCode === 13) {
        // Do something
    }
});

// e.key is the modern way of detecting keys
// e.keyCode is deprecated (left here for for legacy browsers support)
// keyup is not compatible with Jquery select(), Keydown is.
你是在哪个浏览器中测试的?我认为旧版本的 IE 不会触发文档上的 keyup 事件(虽然不确定)。
2021-04-26 04:12:59
属性whichcodecharCode并且keyCode已被弃用developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent,请实际信息添加到您的答案。
2021-05-01 04:12:59
@jQuerybeast 它不是必需的event.keyCode是一个Number,所以 JavaScript 将采取与==相同的步骤===
2021-05-02 04:12:59
您的代码无法正常工作,因为您使用了 .is() 并且需要 === 而不是 ==。有关更多详细信息,请参阅我的答案。
2021-05-04 04:12:59
e.它被宣布为更有用的跨浏览器
2021-05-05 04:12:59

event.key === "回车"

更新更干净:使用event.key. 没有更多的任意数字代码!

注意:旧属性(.keyCode.which)已弃用。

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

现代风格,带有 lambda 和解构

node.addEventListener("keyup", ({key}) => {
    if (key === "Enter") {
        // Do work
    }
})

如果您必须使用 jQuery:

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

Mozilla 文档

支持的浏览器

纯 javascript 版本的荣誉,不知道为什么所有其他版本都在 jquery 中
2021-04-25 04:12:59
因为,OP 将他的示例代码放在 jQuery 中,并且(以及 JavaScript)对 jQuery 进行了标记。
2021-05-10 04:12:59
$(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() 所以这不合逻辑,不工作。还有 ==,我再次在其他情况下使用了两个 ==
2021-05-06 04:12:59
np,你应该总是使用 ===
2021-05-09 04:12:59

试试这个来检测Enter在文本框中按下键。

$(function(){

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

});

我发现的最好方法是使用keydownkeyup对我来说效果不佳)。

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

$('input').keydown( function( event ) {
    if ( event.which === 13 ) {
        // Do something
        // Disable sending the related form
        event.preventDefault();
        return false;
    }
});
event.keyCode 是不推荐使用的 event.which 不是,所以这更好
2021-05-11 04:12:59