选择焦点上的文字

时间:2011-06-24 15:31:56

标签: javascript jquery

我正在尝试使用jQuery在只读输入框中选择文本,这就是我所拥有的:

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

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

有关于此的任何想法吗?

8 个答案:

答案 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目的),还要添加clickmouseup处理程序在点击的情况下进行实际选择。

$('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 colorbackground-color,使其看起来像是被选中。