将焦点设置在按钮上不起作用

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

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

微软决定他们不喜欢e.keyCode ,而是有自己的语法, e.keyCode

你必须检查两个:

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

问题是IE无法足够快地响应,因此您需要在输入livefunction和调用.focus()之间添加一个小延迟。 所以,替换

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

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

这与使用e.keyCode作为Blender建议的e.which一起应该解决您的问题。

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

尝试使用类选择器。 为该按钮指定class class="Test"的类名,然后使用$(".Text").focus()

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