jQuery установить выделенный текст - PullRequest
6 голосов
/ 22 августа 2009

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

Как бы я сделал это с jQuery?

Ответы [ 3 ]

7 голосов
/ 22 августа 2009

пара ссылок здесь .

$("#myInputField").focus(function(){
    // Select input field contents
    this.select();
});

// Add this behavior to all text fields
$("input[type=text]").focus(function(){
    // Select field contents
    this.select();
});
4 голосов
/ 22 августа 2009

Чтобы просто выделить текст, вы должны сделать что-то вроде:

$(".inputs-to-which-you-want-to-apply-this-behavior").focus(function() {
  this.select();
});

Другой подход, который не выбирает текст, а скорее удаляет его (только для замены, если оставить поле пустым, будет выглядеть примерно так:

$(document).ready(function() {
  $(".inputs-that-currently-have-a-default-value-in-them").each(function() {
    var original = $(this).val();
    $(this).focus(function() {
        if ($(this).val() == original)
          $(this).val('');
    });

    $(this).blur(function() {
      if ($(this).val() == '')
        $(this).val(original);
    });
  });
});

(Я предпочитаю этот последний подход, если текст, который находится в поле для начала, является текстом-заполнителем, таким как «Введите ваше имя», но если в поле есть, например, имя, которое я ввел в прошлый раз, когда ваша первоначальная идея просто Выбор текста, безусловно, будет лучше.)

0 голосов
/ 22 августа 2009

Из того, что я попробовал, это поведение по умолчанию в большинстве браузеров, которые я использую.

Хотя функция select() делает то, что говорили другие. Вместо этого я подумал, что будет полезно установить значение поля ввода пустым, если поле было сфокусировано.

Что-то вроде:

$(":input").focus = function(){if(this.type=="text"){value=""}return true};
...