我的应用程序需要用户输入,在文本框中输入值时,用户按Enter(返回键)并调用 按钮onclick事件。这适用于IE,FF但不是Chrome。输入chrome时,不会生成按键事件 这是我的代码片段
$('#myDiv').keypress(function (e) {
alert("Key pressed");
if (e.keyCode == $.ui.keyCode.ENTER) {
alert("enter pressed");
}
});
有人可以就此提供意见吗?
答案 0 :(得分:24)
跨浏览器方法:
$('#myDiv').keydown( function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if(key == 13) {
e.preventDefault();
alert("enter pressed");
}
});
在Chrome 24上测试:http://jsfiddle.net/PTauw/1/
答案 1 :(得分:6)
keypress
是检测输入了哪个字符的正确事件(尽管在这种特殊情况下,检测输入键的情况,keydown
也可以正常工作)。但是,如何获取在按键事件中键入的字符在浏览器之间是不一致的,因此jQuery会对which
属性进行规范化。这就是你想要的:
$('#myDiv').keypress(function (e) {
alert("Key pressed");
if (e.which == $.ui.keyCode.ENTER) {
alert("enter pressed");
}
});
关键事件的权威参考:http://unixpapa.com/js/key.html
答案 2 :(得分:0)
此链接可能对您有所帮助...
Api Jquery Key Press
或尝试使用此代码
将按键更改为keydown:
$('#myDiv').keydown(function(e) {
// your logic
alert("Key pressed");
if (e.keyCode == $.ui.keyCode.ENTER) {
alert("enter pressed");
}
});
答案 3 :(得分:-1)
Chrome似乎使用ENTER
密钥,而不是13
。
这适用于所有浏览器,包括CHROME
。
$('#myDiv').keydown(function(e) {
if ((e.which == 13) || (e.which == keyCode.ENTER)) {
alert("enter pressed");
}