вход jQuery выбирает все на фокусе

Я использую этот код, чтобы попытаться выбрать весь текст в поле, когда пользователь фокусируется на поле. То, что происходит, это выбирает все в течение секунды, затем его отмененный выбор и курсор ввода оставляют, где я нажал...

$("input[type=text]").focus(function() {
   $(this).select();
});

Я хочу, чтобы все это осталось выбранным.

314
задан Smita Ahinave 3 February 2016 в 21:04
поделиться

2 ответа

Попробуйте использовать щелчок вместо фокуса . Кажется, это работает как для мыши, так и для ключевых событий (по крайней мере, в Chrome / Mac):

jQuery <версия 1.7:

$("input[type='text']").click(function () {
   $(this).select();
});

jQuery версии 1.7 +:

$("input[type='text']").on("click", function () {
   $(this).select();
});

Вот демонстрация

466
ответ дан 23 November 2019 в 01:08
поделиться

Я думаю, что происходит следующее:

focus()
   UI tasks related to pre-focus
   callbacks
       select()
   UI tasks related to focus (which unselect again)

Временным решением может быть асинхронный вызов select (), чтобы он полностью выполнялся после focus ():

$("input[type=text]").focus(function() { 
    var save_this = $(this);
    window.setTimeout (function(){ 
       save_this.select(); 
    },100);
});
65
ответ дан 23 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: