在 Firefox 中单击鼠标时无法选择所有输入元素文本
Having trouble selecting all input element text on mouse click in Firefox
最近 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>
目的是 select 输入元素中的所有文本,当他们点击它时(就像它如何 select 默认情况下跳入时所有文本),所以当他们开始输入时它会删除其中的内容并重新开始。
但是,在 Firefox 中(还有 SeaMonkey),即使使用上面的代码,有时也会取消select鼠标上的文本,并恢复到默认情况,将插入符号放在用户点击的位置,select什么都没有。您将始终看到文本至少在一瞬间全部 selected。
我能做什么?有什么建议吗?
请在此处查看 fiddle:
我真的不明白为什么在 firefox 中会发生这种情况,我还在 jquery 中测试了你在做什么以及 MDN(Mozilla Developer network)推荐的方式,因此我我会假设这是一个错误。
但我为您提供了一个可行的临时解决方案,请在 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);
}
});
});
最近 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>
目的是 select 输入元素中的所有文本,当他们点击它时(就像它如何 select 默认情况下跳入时所有文本),所以当他们开始输入时它会删除其中的内容并重新开始。
但是,在 Firefox 中(还有 SeaMonkey),即使使用上面的代码,有时也会取消select鼠标上的文本,并恢复到默认情况,将插入符号放在用户点击的位置,select什么都没有。您将始终看到文本至少在一瞬间全部 selected。
我能做什么?有什么建议吗?
请在此处查看 fiddle:
我真的不明白为什么在 firefox 中会发生这种情况,我还在 jquery 中测试了你在做什么以及 MDN(Mozilla Developer network)推荐的方式,因此我我会假设这是一个错误。
但我为您提供了一个可行的临时解决方案,请在 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);
}
});
});