14

我试图在用户按下Enter文本框中的键时将焦点设置为按钮。但它不起作用。我正在使用 Internet Explorer 8 浏览器。我错过了什么吗?

$("input.Box").live('keydown', function(e) {
    if (e.keyCode == 13) {
        e.preventDefault(); 
        $("#button").focus(); // Not working?
    }
});
4

4 回答 4

11

问题是 IE 的响应速度不够快,所以你需要在live输入函数和.focus()调用函数之间添加一个小的延迟。所以,更换

$("#button").focus();

setTimeout(function () {
 $('#button').focus();
}, 100);

e.which这与e.keyCode按照 Blender 的建议一起使用应该可以解决您的问题。

于 2011-10-18T04:48:23.960 回答
8

微软决定他们不喜欢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?
    }
});
于 2011-10-18T04:45:56.600 回答
1

你确定名字是对的吗?.NET有重命名事物的习惯。您没有指定语言或环境。

尝试使用类选择器。给按钮一个类名,class="Test"然后使用 选择$(".Text").focus()

于 2011-10-18T04:44:49.127 回答
0

在尝试设置焦点之前,请确保 DOM 已准备好,元素存在。

于 2013-07-19T16:34:45.183 回答