jQuery - выделить весь текст из текстовой области - PullRequest
126 голосов
/ 27 апреля 2011

Как я могу сделать так, чтобы при щелчке внутри текстовой области было выделено все ее содержимое?

И, в конце концов, при повторном нажатии, чтобы отменить его выбор.

Ответы [ 6 ]

191 голосов
/ 27 апреля 2011

Чтобы пользователь не раздражался, когда весь текст выбирается каждый раз, когда он пытается переместить каретку с помощью мыши, вы должны сделать это с помощью события focus, а не события click.Следующее выполнит работу и решит проблему в Chrome, которая не позволяет работать самой простой версии (то есть просто вызвать метод select() текстовой области в обработчике focus).

jsFiddle: http://jsfiddle.net/NM62A/

Код:

<textarea id="foo">Some text</textarea>

<script type="text/javascript">
    var textBox = document.getElementById("foo");
    textBox.onfocus = function() {
        textBox.select();

        // Work around Chrome's little problem
        textBox.onmouseup = function() {
            // Prevent further mouseup intervention
            textBox.onmouseup = null;
            return false;
        };
    };
</script>

JQuery версия:

$("#foo").focus(function() {
    var $this = $(this);
    $this.select();

    // Work around Chrome's little problem
    $this.mouseup(function() {
        // Prevent further mouseup intervention
        $this.unbind("mouseup");
        return false;
    });
});
14 голосов
/ 20 октября 2012

Лучший способ, с решением проблемы табуляции и хрома и новым способом jquery

$("#element").on("focus keyup", function(e){

        var keycode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
        if(keycode === 9 || !keycode){
            // Hacemos select
            var $this = $(this);
            $this.select();

            // Para Chrome's que da problema
            $this.on("mouseup", function() {
                // Unbindeamos el mouseup
                $this.off("mouseup");
                return false;
            });
        }
    });
11 голосов
/ 27 апреля 2011

Я закончил, используя это:

$('.selectAll').toggle(function() {
  $(this).select();
}, function() {
  $(this).unselect();
});
5 голосов
/ 24 декабря 2013
$('textarea').focus(function() {
    this.select();
}).mouseup(function() {
    return false;
});
5 голосов
/ 13 мая 2013

Немного короче версия jQuery:

$('your-element').focus(function(e) {
  e.target.select();
  jQuery(e.target).one('mouseup', function(e) {
    e.preventDefault();
  });
});

Правильно обрабатывает уголок Chrome. См. http://jsfiddle.net/Ztyx/XMkwm/ для примера.

4 голосов
/ 27 апреля 2011

Выбор текста в элементе (сродни выделению мышью)

:)

Используя принятый ответ на этот пост, вы можете вызвать функцию следующим образом:

$(function() {
  $('#textareaId').click(function() {
    SelectText('#textareaId');
  });
});
...