使用jQuery,我如何找到哪个键被按下时,我绑定到按键事件?
$('#searchbox input').bind('keypress', function(e) {});
我想在按下ENTER键时触发提交。
(更新)
尽管我自己找到了(或者更好的:一个)答案,但似乎还有变化的空间;)
keyCode和它之间有区别吗?特别是如果我只找ENTER,它永远不会是unicode键?
是否有些浏览器提供一种属性,而其他浏览器提供另一种?
使用jQuery,我如何找到哪个键被按下时,我绑定到按键事件?
$('#searchbox input').bind('keypress', function(e) {});
我想在按下ENTER键时触发提交。
(更新)
尽管我自己找到了(或者更好的:一个)答案,但似乎还有变化的空间;)
keyCode和它之间有区别吗?特别是如果我只找ENTER,它永远不会是unicode键?
是否有些浏览器提供一种属性,而其他浏览器提供另一种?
当前回答
这是一个jquery扩展,将处理进入键被按下。
(function ($) {
$.prototype.enterPressed = function (fn) {
$(this).keyup(function (e) {
if ((e.keyCode || e.which) == 13) {
fn();
}
});
};
}(jQuery || {}));
$("#myInput").enterPressed(function() {
//do something
});
在这里可以找到一个工作示例 http://jsfiddle.net/EnjB3/8/
其他回答
... 这个例子阻止表单提交(通常是捕获击键#13时的基本意图):
$('input#search').keypress(function(e) {
if (e.which == '13') {
e.preventDefault();
doSomethingWith(this.value);
}
});
使用事件。关键和现代JS!
再也没有数字代码了。你可以直接检查钥匙。例如“Enter”、“LeftArrow”、“r”或“r”。
const input = document.getElementById("searchbox");
input.addEventListener("keypress", function onEvent(event) {
if (event.key === "Enter") {
// Submit
}
else if (event.key === "Q") {
// Play quacking duck sound, maybe...
}
});
Mozilla文档
支持的浏览器
试试这个:
jQuery('#myInput').keypress(function(e) {
code = e.keyCode ? e.keyCode : e.which;
if(code.toString() == 13) {
alert('You pressed enter!');
}
});
这是一个jquery扩展,将处理进入键被按下。
(function ($) {
$.prototype.enterPressed = function (fn) {
$(this).keyup(function (e) {
if ((e.keyCode || e.which) == 13) {
fn();
}
});
};
}(jQuery || {}));
$("#myInput").enterPressed(function() {
//do something
});
在这里可以找到一个工作示例 http://jsfiddle.net/EnjB3/8/
有些浏览器使用keyCode,有些使用which。如果你正在使用jQuery,你可以可靠地使用它,因为jQuery标准化了东西。实际上,
$('#searchbox input').bind('keypress', function(e) {
if(e.keyCode==13){
}
});