选择焦点上的文字

dzm*_*dzm 9 javascript jquery

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

    $('input').focus(function(){
        $(this).select();
    })
Run Code Online (Sandbox Code Playgroud)

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

围绕这个想法吗?

小智 14

我使用下面的代码工作了.我的chrome版本:Version 24.0.1312.52

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

$("#inputid").on("mouseup",function(e){
    return false;
});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 ...

  • 这是最干净的解决方案,但您可能希望使用`e.preventDefault()`而不是`return false`. (4认同)

小智 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)
  }
});
Run Code Online (Sandbox Code Playgroud)


Gab*_*oli 4

问题在于输入框是只读的(正如您在问题中提到的)。
这不是 jQuery 或 javascript 问题

IE、FF、Opera都没有问题。但 Chrome 和 Safari 却出现了你提到的问题。

看起来像是一个不同的实现,我不确定你可以解决这个问题..

演示展示(在打开控制台的情况下检查所有浏览器
http://jsfiddle.net/gaby/N9qzq/3/