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

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

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

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

都会

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

请试试这段代码

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

我用了

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

   

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

我刚发现的解决方案是使用下面的代码。

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

根据Mozilla开发人员网络文档 ,这将选择文本,但不会将其集中。 至少对我来说,这防止了在焦点事件处理程序中选择文本的问题,因为选择文本不会导致包含它的元素再次聚焦。