Текст выбирается автоматически при фокусировке элемента в некоторых браузерах

#jquery #focus

#jquery #фокусировка

Вопрос:

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

Возможно ли отменить выделение текста при фокусировке или вообще предотвратить это выделение?

Ответ №1:

Присвоение значения текстовому полю самому себе при фокусировке отменит выделение текста.

 $('input').focus(function() { 
    var elem = $(this);
    elem.val(elem.val());
} );
  

Рабочая демонстрация

Комментарии:

1. Спасибо за это, но в IE существует проблема, заключающаяся в том, что при расфокусировке и повторном фокусировании он начнет писать тест при начале ввода текста …

2. @новичок: Теперь я понимаю, что вы имеете в виду, IE9 возвращает курсор к началу input . Какую версию вы используете?

3. IE8, но это нормально для IE, ничего не работает из коробки, всегда нужны исправления

Ответ №2:

Я не слишком уверен, но я думаю, что это может быть решением или просто использовать атрибут onselect="return;"

 $('#selector').select(function (e){
   e.preventDefault();
   return;
});
  

Комментарии:

1. какую версию chrome вы используете?

2. @town Я использую ту же версию, что и предоставленная вами демонстрационная версия, которая работает для меня

3. Как странно! Ну, я в тупике. Перейдем к Google … 🙂

Ответ №3:

Я получил его, работая со следующим кодом:

 var searchInput = $('input.search');
var l = searchInput.val().length;
searchInput.attr('selectionStart', l);
searchInput.attr('selectionEnd', l);
searchInput.focus();
  

Комментарии:

1. Определенно не работает у меня в Chrome 11.0.696.65. Я бы рекомендовал использовать мое решение (не то чтобы я предвзятый или что-то в этом роде! 😉 ) as selectionStart и selectionEnd не являются согласованными в разных браузерах.