Javascript焦点并选择不在FF中工作

时间:2010-04-01 18:34:32

标签: javascript jquery select focus

使用jQuery,以下内容在FF中不起作用,但它在IE中

$(this).focus().select();

我环顾四周,发现你可以使用超时来解决这个问题,但如果我能避免这种情况,那就不是我想做的事情。有没有人知道另一种方法来做到这一点并让它在FF中工作?

大都市

4 个答案:

答案 0 :(得分:5)

我之前也遇到过这种情况。我相信setTimeout()解决方案是唯一可以在Firefox中使用的方法。问题与事件处理顺序有关,如果我没记错的话:IE会在调用focus()方法时立即更改控件焦点,但Firefox会通过向事件队列添加焦点事件来处理它,直到事件队列才解决当前事件处理完成后。 setTimeout()技巧有效,因为它会在焦点更改事件之后将剩余的代码添加到事件队列中的另一个事件,从而在代码继续处理之前解析它。

答案 1 :(得分:3)

请尝试此代码

setTimeout(function() 
 {
   $(Selecter).focus(); 
 }, 0);

答案 2 :(得分:0)

我用过

$('input').focus().select();

 <input type="text" value="Some text" />

它在firefox中运行。也许我不明白你的问题究竟是什么。

答案 3 :(得分:0)

我刚发现的解决方法是使用以下代码。

[elementHere].setSelectionRange(0, [elementHere].value.length);

根据Mozilla Developer Network documentation,这会选择文字,但不会对其进行聚焦。至少对我来说,这可以防止在焦点事件处理程序中选择文本时出现问题,因为选择文本不会导致包含它的元素再次聚焦。