在 Firefox 中单击鼠标时无法选择所有输入元素文本

Having trouble selecting all input element text on mouse click in Firefox

本文关键字:选择 输入 文本 元素 Firefox 单击 鼠标      更新时间:2023-09-26

我在最新的IE/Chrome中取得了巨大的成功:

<input value="Test"/>
<script>
require(["dojo/on", "dojo/query", "dojo/domReady!"], function(on, query){
    var blah = query("input")[0];
    on(blah, "focus", function(e){
   this.setSelectionRange(0,9999);
});
});
</script>

目的是在他们单击输入元素时选择输入元素中的所有文本(就像默认情况下在 Tab 键插入时选择所有文本一样),因此当他们开始键入时,它会擦除其中的内容并重新开始。

但是,在Firefox(SeaMonkey也是)中,即使使用上述代码,有时也会在鼠标向上取消选择文本,并恢复为将插入符号放在用户单击的位置而什么都不选择的默认情况。您将始终看到文本至少在一瞬间被选中。

我能做什么?有什么建议吗?

在这里看到小提琴:

http://jsfiddle.net/avxra2q2/11/

我真的不知道为什么这会发生在 Firefox 中,我还测试了你在 jquery 中做什么以及 MDN(Mozilla 开发者网络)推荐的方式,因此我将假设它是一个错误。

但是我为您提供了一个可行的临时解决方案,请在 JSfiddle 中尝试这个,我得到了这个答案,因为我的浏览器经验,尤其是当您玩焦点和光标时,事情不会按照您的方式进行,因此浏览器需要一些时间。

你也可以看看下面的代码

require(["dojo/on", "dojo/query","dojo/has", "dojo/sniff", "dojo/domReady!"], function(on, query,has,sniff){
    var blah = query("input")[0];
    on(blah, "focus", function(e){
        if(has("ff")){ // only firefox 
       var myVar = setTimeout(function(){
                      clearTimeout(myVar);
                     blah.focus();
                blah.setSelectionRange(0,9999);      
                   },150);
        }else{
              this.setSelectionRange(0,9999);
        }
});
});