我试图在用户按下Enter文本框中的键时将焦点设置为按钮。但它不起作用。我正在使用 Internet Explorer 8 浏览器。我错过了什么吗?
$("input.Box").live('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
$("#button").focus(); // Not working?
}
});
问题是 IE 的响应速度不够快,所以你需要在live
输入函数和.focus()
调用函数之间添加一个小的延迟。所以,更换
$("#button").focus();
和
setTimeout(function () {
$('#button').focus();
}, 100);
e.which
这与e.keyCode
按照 Blender 的建议一起使用应该可以解决您的问题。
微软决定他们不喜欢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?
}
});
你确定名字是对的吗?.NET有重命名事物的习惯。您没有指定语言或环境。
尝试使用类选择器。给按钮一个类名,class="Test"
然后使用 选择$(".Text").focus()
。
在尝试设置焦点之前,请确保 DOM 已准备好,元素存在。