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

时间:2015-01-28 07:41:16

标签: javascript html dojo onfocus

我在最新的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>

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

然而,在Firefox(SeaMonkey)中,即使使用上面的代码,SOMETIMES也会取消选择mouseup上的文本并恢复默认情况下将插入符号放在用户单击的位置并且不选择任何内容。您将始终看到文本全部被选中至少一瞬间。

我该怎么办?有什么建议吗?

请参阅此处的小提琴:

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

1 个答案:

答案 0 :(得分:1)

我真的无法弄清楚为什么在firefox中发生了这种情况,我还测试了你在jquery中做了什么,以及MDN(Mozilla开发者网络)推荐的方式,因为我会假设它是一个bug。

但是我找到了一个可行的临时解决方案,在JSfiddle中尝试this我得到了这个答案,因为我对浏览器的体验,特别是当你玩焦点和游标的事情时,你不会这样做,所以浏览器需要一些时间。

您还可以查看以下代码

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);
        }

});
});