我正在尝试将焦点设置为按钮,同时用户在文本框中按 Enter 键。但它没有用。我正在使用Internet Explorer 8浏览器。我错过了什么吗?
$("input.Box").live('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$("#button").focus(); // Not working?
}
});
答案 0 :(得分:9)
问题是IE无法足够快地响应,因此您需要在输入live
函数和调用.focus()
之间添加一个小延迟。所以,替换
$("#button").focus();
与
setTimeout(function () {
$('#button').focus();
}, 100);
这与将e.which
与e.keyCode
一起使用为Blender建议一起解决您的问题。
答案 1 :(得分:7)
Microsoft决定他们不喜欢e.keyCode
,而是拥有自己的语法e.which
。
您必须检查两者:
$("input.Box").live('keydown', function(e) {
var keyCode = (window.event) ? e.which : e.keyCode;
if (keyCode == 13)
e.preventDefault();
$("#button").focus(); // Not working?
}
});
答案 2 :(得分:1)
您确定名称是否正确? .NET有重命名的习惯。您没有指定语言或环境。
尝试使用类选择器。为该按钮指定一个class="Test"
的班级名称,然后使用$(".Text").focus()
选择。
答案 3 :(得分:-1)
在尝试设置焦点之前,确保DOM已准备就绪,元素存在。