7

当我将焦点放在一个元素上时,我希望选择所有文本。

我用了

$('.class-focusin').focusin(function(e) {
    $(this).select();
});

但这不是我想要的完美行为。当我在两个字符之间单击时,输入值没有被选中,中间有一个光标。我想要 chrome 浏览器中 url 栏的行为:您单击并且光标被值选择替换

随意在这个小提琴中测试我的问题:http: //jsfiddle.net/XS6s2/8/

我希望文本能够在选择后接收光标。选择的答案,下面绝对是我想要的,谢谢

4

5 回答 5

2

您可以有一个变量来查看文本是否已被选中:

http://jsfiddle.net/jonigiuro/XS6s2/21/

var has_focus = false;
$('.class-focusin').click(function(e) {
    if(!has_focus) {
        $(this).select();
        has_focus = true;
    }
 });

$('.class-focusin').blur(function(e) {
   has_focus = false; 
});
于 2013-07-18T07:37:17.253 回答
1

我想您必须等待浏览器将焦点放在元素上,然后进行选择:

$('.class-focusin').focus(function(e) { 
    var $elem = $(this);
    setTimeout(function() {
    $elem.select();
    }, 1);
 });

呸。或者简单地绑定到点击事件:

$('.class-focusin').click(function(e) { 
    $(this).select();
 });
于 2013-07-18T07:36:18.467 回答
0

尝试使用 click 而不是 focusin。

$('.class-focusin').click(function(e) {
    $(this).select();
});

演示

再见!

于 2013-07-18T07:37:10.487 回答
0

工作演示http://jsfiddle.net/cse_tushar/XS6s2/22/

$(document).ready(function () {
    $('.class-focusin').click(function (e) {

        $(this).select();

    });
});
于 2013-07-18T07:37:11.173 回答
0

它是Select all the text in an input, focusin的直接副本,这是一个很好的答案

$(".class-focusin").on("focus",function(e){
    $(this).select();
});

$(".class-focusin").on("mouseup",function(e){
    e.preventDefault();
});

http://jsfiddle.net/XS6s2/31/

于 2013-07-18T07:47:38.840 回答