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


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

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

11338
2017-10-18 04:41


起源



答案:


微软决定他们不喜欢 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?
    }
});

6
2017-10-18 04:45



对我来说,e.keyCode == 13似乎工作正常.. - Lamps


答案:


微软决定他们不喜欢 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?
    }
});

6
2017-10-18 04:45



对我来说,e.keyCode == 13似乎工作正常.. - Lamps


问题是IE无法足够快地响应,所以你需要在两者之间添加一点延迟 live 输入功能,何时输入 .focus() 叫做。所以,替换

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

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

这与结合使用 e.which 同 e.keyCode 正如Blender所说,应该解决你的问题。


9
2017-10-18 04:48



对我来说,e.keyCode == 13似乎工作正常。 - Lamps


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

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


1
2017-10-18 04:44



是的,这个名字是正确的。 - Lamps


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


-1
2017-07-19 16:34



他没有试图将按钮集中在文档加载上。 - Fabio Antunes