Выберите все содержимое текстового поля, когда оно получает фокус (Vanilla JS или jQuery) - PullRequest
290 голосов
/ 26 января 2009

Что такое решение Vanilla JS или jQuery, которое будет выделять все содержимое текстового поля, когда текстовое поле получает фокус?

Ответы [ 24 ]

0 голосов
/ 07 апреля 2015

Мое решение следующее:

var mouseUp;
$(document).ready(function() {
    $(inputSelector).focus(function() {
        this.select();
    }) 
    .mousedown(function () {
        if ($(this).is(":focus")) {
          mouseUp = true;
        }
        else {
          mouseUp = false;
        }
     })
     .mouseup(function () {
        return mouseUp;
     });
});

Таким образом, mouseup будет работать обычно, но не будет отменен после получения фокуса при вводе

0 голосов
/ 12 марта 2015

Если вы объедините события в цепочку, я считаю, что это исключает необходимость использования .one, как предлагается в другом месте в этой теме.

Пример:

$('input.your_element').focus( function () {
    $(this).select().mouseup( function (e) {
        e.preventDefault();
    });
});
0 голосов
/ 20 июня 2018

Я немного опаздываю на вечеринку, но это прекрасно работает в IE11, Chrome, Firefox, без проблем с мышью (и без JQuery).

inputElement.addEventListener("focus", function (e) {
    var target = e.currentTarget;
    if (target) {
        target.select();
        target.addEventListener("mouseup", function _tempoMouseUp(event) {
            event.preventDefault();
            target.removeEventListener("mouseup", _tempoMouseUp);
        });
    }
});
0 голосов
/ 20 июня 2014
$('input').focus(function () {
    var self = $(this);
    setTimeout(function () {
        self.select();
    }, 1);        
});

Редактировать: По запросу @ DavidG я не могу предоставить подробности, потому что я не уверен, почему это работает, но я верю, что это как-то связано с событием фокуса, распространяющимся вверх или вниз, или с чем бы то ни было, и с элементом ввода получать уведомление, он получил фокус. Установка времени ожидания дает элементу момент, чтобы понять, что это сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...