使用jQuery,我如何找到哪个键被按下时,我绑定到按键事件?
$('#searchbox input').bind('keypress', function(e) {});
我想在按下ENTER键时触发提交。
(更新)
尽管我自己找到了(或者更好的:一个)答案,但似乎还有变化的空间;)
keyCode和它之间有区别吗?特别是如果我只找ENTER,它永远不会是unicode键?
是否有些浏览器提供一种属性,而其他浏览器提供另一种?
使用jQuery,我如何找到哪个键被按下时,我绑定到按键事件?
$('#searchbox input').bind('keypress', function(e) {});
我想在按下ENTER键时触发提交。
(更新)
尽管我自己找到了(或者更好的:一个)答案,但似乎还有变化的空间;)
keyCode和它之间有区别吗?特别是如果我只找ENTER,它永远不会是unicode键?
是否有些浏览器提供一种属性,而其他浏览器提供另一种?
当前回答
鉴于您正在使用jQuery,您绝对应该使用.which。是的,不同的浏览器设置不同的属性,但jQuery会对它们进行规范化,并在每种情况下设置.which值。参见http://api.jquery.com/keydown/上的文档,它说明:
要确定按下了哪个键,可以检查传递给处理程序函数的事件对象。虽然浏览器使用不同的属性来存储这些信息,但jQuery规范化了.which属性,因此我们可以可靠地使用它来检索键代码。
其他回答
以下是对各种浏览器行为的详细描述http://unixpapa.com/js/key.html
$(document).bind('keypress', function (e) {
console.log(e.which); //or alert(e.which);
});
你应该有firbug来查看控制台的结果
// in jquery source code...
if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) {
event.which = event.charCode || event.keyCode;
}
// So you have just to use
$('#searchbox input').bind('keypress', function(e) {
if (e.which === 13) {
alert('ENTER WAS PRESSED');
}
});
我做的最简单的方法是:
$("#element").keydown(function(event) {
if (event.keyCode == 13) {
localiza_cep(this.value);
}
});
根据Kilian的回答:
如果只输入按键很重要:
<form action="javascript:alert('Enter');">
<input type=text value="press enter">
</form>