获得焦点时选择文本框的所有内容(Vanilla JS或jQuery)

Jon*_*son 302 javascript jquery user-interface

什么是Vanilla JS或jQuery解决方案,当文本框获得焦点时,它将选择文本框的所有内容?

Joh*_*han 361

$(document).ready(function() {
    $("input:text").focus(function() { $(this).select(); } );
});
Run Code Online (Sandbox Code Playgroud)

  • 由于mouseup事件,WebKit浏览器似乎会干扰它.我添加了这个并且它有效:$('input:text').mouseup(function(e){return false;}); (70认同)
  • 我这样使用:$("input:text").select().focus(); (24认同)
  • 另外只是为了额外的信息:"输入[type = text]"现在可以是"输入:文本"问候 (22认同)
  • 这对我来说似乎不适用于Chrome和jQuery网站说它依赖于浏览器.其他人可以验证吗? (8认同)
  • Kenny是正确的,但不幸的是'mouseup'也会影响Chrome微调控件.触发"点击"而不是"焦点"似乎可以解决这个问题 (5认同)
  • `$("input:text").focus().select();`似乎有效.是不是有这么简单的原因? (5认同)
  • 正如@ Kenny的评论webkit剂量确实会干扰.我最终使用了这个:`$("input:text").on('mouseup',function(){$(this).select();});`在最新的IE,chrome和firefox浏览器中工作正常. (3认同)
  • 使用`this.select()`更快.[这是香草](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select). (2认同)

Zac*_*ach 212

<input type="text" onfocus="this.select();" onmouseup="return false;" value="test" />
Run Code Online (Sandbox Code Playgroud)

  • + onmouseup ="return false"停止在点击时取消选择 (40认同)
  • 将标记与脚本分开是非常好的. (9认同)
  • **不要**添加 `onmouseup="return false;"` 如果您希望用户能够自由选择和编辑文本 _after_ 聚焦在文本框内。使用此代码,文本将被锁定为“全选”状态,除非用户输入新文本或使用箭头键移动,否则用户将无法对其进行编辑。老实说,这感觉像是一种非常奇怪的行为,除非文本框旨在永久不可编辑(因此被禁用),否则没有意义。 (4认同)
  • 用于mouseup的某种stopEvent的+1,或者这不能可靠地工作.这样做的缺点是,一旦光标在字段中,单击所选文本中的某个位置以将光标定位在那里就不起作用; 点击被有效禁用.尽管如此,对于需要在焦点上选择整个文本的情况,它可能是两个邪恶中较小的一个. (2认同)
  • 从技术上讲,如果您只是希望在用户_第一次_单击或选项卡时发生选择,则不需要 `onmouseup="return false;"`。并为普通 javascript +1! (2认同)

Tom*_*rda 41

$(document).ready(function() {
  $("input[type=text]").focus().select();
});
Run Code Online (Sandbox Code Playgroud)

  • 证实.当前最高的投票/接受答案似乎对Chrome不起作用. (3认同)

Yog*_*wal 39

$(document).ready(function() {
    $("input:text")
        .focus(function () { $(this).select(); } )
        .mouseup(function (e) {e.preventDefault(); });
});
Run Code Online (Sandbox Code Playgroud)


小智 22

jQuery不是JavaScript,在某些情况下更容易使用.

看看这个例子:

<textarea rows="10" cols="50" onclick="this.focus();this.select()">Text is here</textarea>
Run Code Online (Sandbox Code Playgroud)

来自CSS Trics.

  • 如果你不介意让你的标记和代码混淆,那也许没关系; 现在大多数人都试图让他们的剧本"不引人注目".哦......和jQuery*是*Javascript. (6认同)
  • 感谢onclick的建议,效果很好.不是每个人都使用jQuery很高兴看到另一种选择. (2认同)

小智 20

这不仅仅是Chrome/Safari问题,我在Firefox 18.0.1中遇到了类似的行为.有趣的是,这不会发生在MSIE上!这里的问题是第一个强制取消选择输入内容的mouseup事件,所以只需忽略第一次出现.

$(':text').focus(function(){
    $(this).one('mouseup', function(event){
        event.preventDefault();
    }).select();
});
Run Code Online (Sandbox Code Playgroud)

timeOut方法会导致奇怪的行为,并且阻止每个mouseup事件,您无法删除在输入元素上再次单击的选择.

  • +1 表示使用 one 来防止单个鼠标悬停。我真的不喜欢在初次点击后无法用鼠标选择文本。 (2认同)

Ani*_*vle 17

HTML :

Enter Your Text : <input type="text" id="text-filed" value="test">
Run Code Online (Sandbox Code Playgroud)

使用JS:

var textFiled = document.getElementById("text-filed");
textFiled.addEventListener("focus", function() { this.select(); });
Run Code Online (Sandbox Code Playgroud)

使用 JQuery :

$("#text-filed").focus(function() { $(this).select(); } );
Run Code Online (Sandbox Code Playgroud)

使用 React JS:

在相应的组件中 -

<input
  type="text"
  value="test"
  onFocus={e => e.target.select()}
/>
Run Code Online (Sandbox Code Playgroud)

  • 这在 React 中对我有用:`onFocus={(e) =&gt; e.target.select()}` (2认同)

Jam*_*ate 10

我的解决方案是使用超时.似乎工作正常

$('input[type=text]').focus(function() {
    var _this = this;
    setTimeout(function() {
        _this.select();
    }, 10);
});
Run Code Online (Sandbox Code Playgroud)


Kai*_*Kai 5

这也适用于iOS:

<input type="text" onclick="this.focus(); this.setSelectionRange(0, 9999);" />
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select