2011-06-24 117 views
9

我想选择一个只读输入框中的文本,使用jQuery的文字,这是我有:选择焦点

$('input').focus(function(){ 
     $(this).select(); 
    }) 

当我输入点击然而,它迅速选择所有文本时,它会“闪烁”,然后返回到未选中的正常状态。

有关于此的任何想法?

+0

这似乎对我很好,虽然它取决于我点击的位置。点击文字内容的结尾就可以正常工作,点击中间就会第一次描述你的眨眼,然后第二次工作。 –

+0

我在jQuery 1.4.3中测试了上面的代码,它工作正常! –

回答

4

问题在于输入框是只读的(,正如您在问题中提到的那样)。
它不是一个jQuery或JavaScript问题

IE,FF和Opera也没问题。但Chrome和Safari浏览器表现出你所提到的问题..

貌似不同的实现,我不知道你可以工作,围绕..

演示来展示(检查在所有浏览器与控制台开放
http://jsfiddle.net/gaby/N9qzq/3/

+0

谢谢..将不得不看一个不同的方法,将无法在Chrome中工作。 – dzm

0

由于人们都在提,可以使用CSS来模拟你的选择不一致?当输入接收到焦点时,应用CSS colorbackground-color,使其看起来像被选中。

+0

绝对不是。重点是让用户方便地复制/粘贴字段中的文本。 –

1

这里发生了一些奇怪的事情。 focus发生在mousedown上,但光标放置发生在click(即mousedown后跟mouseup)。当放置光标时,任何选择都会消失。

所以,你最有可能想保持你的focus事件(Tab键和trigger荷兰国际集团的目的),但还添加了clickmouseup处理程序做实际的选择在点击的情况下。

$('input[type="text"]').focus(function() { 
    $(this).select(); 
}).click(function() { 
    if ($(this).val() === 'Your default value') 
    { 
     $(this).select(); 
    } 
}); 

if的存在使得一旦用户定制在输入文本,他们可以点击周围没有选择文本。尽管这并不适用于readonly文本输入,因此可以安全地删除它。

编辑: 代码似乎最多不一致,所以这可能不是解决方案。

0

基于什么加比在他们的帖子中写道,这种解决方案似乎是为我工作:

$('input').focus(function(){ 
    var _self = this; 
    setTimeout(function(){ console.log(_self.select())},100) 
    }) 
5

A的两种技术结合工作对我来说,虽然我的箱子是不是只读的。正常的select()可以在Firefox中正常工作。但是,在Safari中,mouseup和事件顺序会导致它在mouseup上再次取消选择。我附加了mouseup事件,该事件在mouseup完成干扰后(如果文本仍然是要替换的默认文本)后,会在延迟的计时器上启动选择。

例子:

$('#your_selector').focus(function() { 
    $(this).select(); 
}).mouseup(function() { 
    if ($(this).val() === 'Enter search terms here'){ 
    var _self = this; 
    setTimeout(function(){ _self.select()},30) 
    } 
}); 
14

我得到它的工作使用下面的代码。我的Chrome版本:Version 24.0.1312.52

$("#inputid").on("focus",function(e){ 
    $(this).select(); 
}); 

$("#inputid").on("mouseup",function(e){ 
    return false; 
}); 

希望这有助于...

+4

这是最干净的解决方案,但您可能想使用'e.preventDefault()'而不是'return false'。 – iono

2
<input onClick="this.select()" value="Blabla und Blublu" type="text" /> 

应工作

+0

此功能与问题中的功能相同 - 它会有同样的问题。 – Izkata

+2

事件不同:单击而不是焦点。见http://stackoverflow.com/questions/3150275/jquery-input-select-all-on-focus –

0

我对浏览器的这个问题进行测试。 Google有这个问题,我觉得Opera也是。 Firefox,IE ok。我通过this.select()解决了onclick和onfocus问题。