我正在尝试使用jQuery在只读输入框中选择文本,这就是我所拥有的:
$('input').focus(function(){
$(this).select();
})
当我点击输入时,它会快速选择所有文本,它会“闪烁”,然后它会恢复到未被选中的正常状态。
有关于此的任何想法吗?
答案 0 :(得分:14)
我使用以下代码完成了它。我的Chrome版本:Version 24.0.1312.52
$("#inputid").on("focus",function(e){
$(this).select();
});
$("#inputid").on("mouseup",function(e){
return false;
});
希望这会有所帮助......
答案 1 :(得分:5)
这两种技术的组合对我有用,虽然我的盒子不是只读的。普通的select()可以立即在Firefox中运行。但是,在Safari中,鼠标和事件的排序会导致它在mouseup上再次取消选择。我附加了一个mouseup事件,它在mouseup应该完成干扰之后在延迟计时器上启动一个select(如果文本仍然是要替换的默认文本)。
示例:
$('#your_selector').focus(function() {
$(this).select();
}).mouseup(function() {
if ($(this).val() === 'Enter search terms here'){
var _self = this;
setTimeout(function(){ _self.select()},30)
}
});
答案 2 :(得分:4)
问题在于输入框是只读的(正如您在问题中提到的那样)。
(它不是jQuery或javascript问题)
IE,FF和Opera都没有问题。但Chrome和Safari展示了您提到的问题..
看起来像是一个不同的实现,我不确定你能解决这个问题..
演示展示(在所有浏览器中检查控制台打开)
http://jsfiddle.net/gaby/N9qzq/3/
答案 3 :(得分:2)
<input onClick="this.select()" value="Blabla und Blublu" type="text" />
应该工作
答案 4 :(得分:1)
这里发生了一些奇怪的事情。 focus
在mousedown上发生,但是光标放置在click
上(即mousedown
后跟mouseup
)。放置光标后,任何选择都会消失。
因此,您很可能希望保留focus
事件(用于标签和trigger
目的),还要添加click
或mouseup
处理程序在点击的情况下进行实际选择。
$('input[type="text"]').focus(function() {
$(this).select();
}).click(function() {
if ($(this).val() === 'Your default value')
{
$(this).select();
}
});
if
存在,因此一旦用户在您的输入中自定义了文字,他们就可以点击而不选择文字。虽然,这并不真正适用于readonly
文本输入,因此可以安全地删除它。
修改强> 代码似乎最多不一致,所以这可能不是解决方案。
答案 5 :(得分:0)
根据Gaby在帖子中写的内容,这个解决方案似乎对我有用:
$('input').focus(function(){
var _self = this;
setTimeout(function(){ console.log(_self.select())},100)
})
答案 6 :(得分:0)
我在浏览器上测试了这个问题。谷歌有这个问题,我觉得Opera也是。 Firefox,IE确定。我在onclick和onfocus上通过this.select()解决了它。
答案 7 :(得分:-1)
由于人们提到的不一致,您可以使用CSS来模拟您的选择吗?当输入获得焦点时,应用CSS color
和background-color
,使其看起来像是被选中。