如何在 <input> 字段中按回车键执行功能?

IT技术 javascript events input listener
2021-01-18 10:05:24

我有一个输入,我只想为它添加一个事件侦听器,以便在输入聚焦时按 Enter 激活一个功能。我如何用纯 JS 做到这一点?

现在我有:

HTML:

Enter your wage:<input type="text" id="wage" value ="" size=20>
<button id="sub">Submit</button>

JavaScript:

var wage = document.getElementById("wage");
wage.addEventListener("change", validate);

var btn = document.getElementById("sub");
btn.addEventListener("click", validate);

所以基本上该功能validate()在我点击或更改文本时激活,但我想通过按 Enter 来调用它。

6个回答

你可以使用这个:

var wage = document.getElementById("wage");
wage.addEventListener("keydown", function (e) {
    if (e.code === "Enter") {  //checks whether the pressed key is "Enter"
        validate(e);
    }
});

function validate(e) {
    var text = e.target.value;
    //validation of the input...
}

现场演示在这里

使用命名函数而不是匿名函数,因为删除此侦听器是不可能的。
2021-03-15 10:05:24
一个重要的细节e.keyCode目前已被弃用,新的​​正确方法是e.key References //e.keyCode developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode //e.key developer。 mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
2021-03-19 10:05:24
+1。虽然你可以代替alert()validate()
2021-03-28 10:05:24
所有支持的浏览器addEventListener(IE9+,查看这里developer.mozilla.org/en-US/docs/DOM/...
2021-03-29 10:05:24
为什么e使用?我们可以在没有它的情况下执行代码吗?
2021-04-09 10:05:24
var elem = document.getElementById("wage");
elem.onkeyup = function(e){
    if(e.keyCode == 13){
       validate();
    }
}

工作示例 http://jsfiddle.net/aMgLK/

这是当前接受的答案(来自@MinkoGechev)的一个版本,其中包含key而不是 keyCode:

const wage = document.getElementById('wage');
wage.addEventListener('keydown', (e) => {
    if (e.key === 'Enter') {
        validate(e);
    }
});

function validate(e) {
    const text = e.target.value;
    //validation of the input...
}

你需要类似的东西 wage.addEventListener('keydown', validate);

然后您的验证功能需要检查event.keyCode == 13以确定“输入”按键。

如果您将按钮元素更改为

<input type="submit" value="Submit">

它将与键盘上的输入按钮一起使用。