Что такое решение Vanilla JS или jQuery, которое выберет все содержимое текстового поля, когда текстовое поле получает фокус?
javascript
jquery
user-interface
Джон Эриксон
источник
источник
Ответы:
источник
источник
onmouseup="return false;"
если вы хотите, чтобы пользователь мог свободно выбирать и редактировать текст после фокусировки внутри текстового поля. С помощью этого кода текст будет заблокирован в ситуации «выбрать все», и пользователь не сможет редактировать его, если пользователь не введет новый текст или не использует клавиши со стрелками для перемещения. Честно говоря, это выглядит как очень странное поведение и не имеет смысла, если текстовое поле не предназначено для постоянного редактирования (и поэтому отключено).onmouseup="return false;"
если вы просто хотите, чтобы выбор происходил, когда пользователь впервые нажимает или вкладывает. И +1 за ванильный JavaScript!источник
источник
mouseup
события по умолчанию : «когда курсор находится в поле, щелчок где-нибудь в пределах выделенного текста для позиционирования курсора там не работает; щелчки эффективно отключены. Тем не менее, для ситуации, когда желательно выделить весь текст в фокусе, это, вероятно, меньшее из двух зол ".JQuery - это не JavaScript, который в некоторых случаях более прост в использовании.
Посмотрите на этот пример:
Источник: CSS Tricks , MDN
источник
Это не просто проблема Chrome / Safari, с Firefox 18.0.1 у меня было довольно похожее поведение. Самое смешное, что этого не происходит на MSIE! Проблема здесь заключается в первом событии mouseup, которое заставляет отменить выбор входного содержимого, поэтому просто игнорируйте первый случай.
Подход timeOut вызывает странное поведение, и, блокируя каждое событие mouseup, вы не можете удалить выделение, щелкая снова на элементе ввода.
источник
HTML:
Используя JS:
Использование JQuery:
Использование React JS:
В соответствующем компоненте внутри функции рендеринга -
источник
onFocus={(e) => e.target.select()}
мое решение заключается в использовании тайм-аута. Кажется, работает нормально
источник
Это также будет работать на iOS:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select
источник
Я знаю, что встроенный код - это плохой стиль, но я не хотел помещать это в файл .js. Работает без JQuery!
источник
Ответы здесь помогли мне до некоторой степени, но у меня была проблема с полями ввода чисел HTML5 при нажатии кнопок вверх / вниз в Chrome.
Если вы нажмете одну из кнопок и оставите указатель мыши над кнопкой, число будет продолжать меняться, как если бы вы удерживали кнопку мыши, потому что указатель мыши отбрасывался.
Я решил это, удалив обработчик mouseup, как только он был запущен, как показано ниже:
Надеюсь, это поможет людям в будущем ...
источник
mouseup
к полям ввода текста, а не кnumber
s. Поэтому эта проблема не должна возникатьЭто будет работать, попробуйте это -
Работает в Safari / IE 9 и Chrome, но у меня не было возможности протестировать Firefox.
источник
Я знаю, что здесь уже много ответов, но этого пока нет; решение, которое также работает с контентом, сгенерированным ajax:
источник
Мне удалось немного улучшить ответ Зака, добавив несколько вызовов функций. Проблема с этим ответом заключается в том, что он полностью отключает onMouseUp, тем самым предотвращая щелчок мышью в текстовом поле, когда оно сфокусировано.
Вот мой код:
Это небольшое улучшение по сравнению с ответом Зака. Он отлично работает в IE, совсем не работает в Chrome и работает с переменным успехом в FireFox (буквально через раз). Если у кого-то есть идея, как заставить его работать надежно в FF или Chrome, пожалуйста, поделитесь.
В любом случае, я решил поделиться тем, что смогу сделать это немного лучше.
источник
onMouseUp=""
иonMouseDown=""
не правильный стандарт w3. Они должны бытьonmouseup=""
иonmousedown=""
. Как и в случае других html-атрибутов, они должны быть написаны строчными буквами, а не верблюжьими.Как и @Travis и @Mari, я хотел автоматически выбирать, когда пользователь щелкает, что означает предотвращение поведения
mouseup
события по умолчанию , но не запрещение пользователю щелкать по кнопке. Предлагаемое мной решение, которое работает в IE11, Chrome 45, Opera 32 и Firefox 29 (это браузеры, которые я установил в настоящее время), основано на последовательности событий, связанных с щелчком мыши.Когда вы нажимаете на текстовый ввод, который не имеет фокуса, вы получаете эти события (среди прочих):
mousedown
: В ответ на ваш щелчок. Обработка по умолчанию повышаетсяfocus
при необходимости и устанавливает начало выбора.focus
: Как часть обработки по умолчаниюmousedown
.mouseup
: Завершение вашего клика, обработка которого по умолчанию установит конец выбора.Когда вы нажимаете на текстовый ввод, который уже имеет фокус,
focus
событие пропускается. Как @Travis и @Mari оба проницательно заметили, обработка по умолчаниюmouseup
должна быть предотвращена, только еслиfocus
происходит событие. Однако, посколькуfocus
события « не произошло» не существует, мы должны сделать вывод, что мы можем сделать вmousedown
обработчике.Решение @ Mari требует импорта jQuery, чего я хочу избежать. Решение @ Travis делает это путем проверки
document.activeElement
. Я не знаю, почему именно его решение не работает в разных браузерах, но есть другой способ отследить, имеет ли фокус ввод текста: просто следить за событиямиfocus
иblur
событиями.Вот код, который работает для меня:
Я надеюсь, что это кому-то поможет. :-)
источник
источник
Вам нужно только добавить следующий атрибут:
Например:
(Честно говоря, я понятия не имею, зачем вам нужно что-то еще.)
источник
Это сработало для меня (пост, так как это не в ответах, а в комментариях)
источник
Редактировать: По запросу @ DavidG я не могу предоставить подробности, потому что я не уверен, почему это работает, но я считаю, что это как-то связано с событием фокуса, распространяющимся вверх или вниз, или с чем бы то ни было, и с элементом ввода, получающим уведомление это получило фокус. Установка времени ожидания дает элементу момент, чтобы понять, что это сделано.
источник
Если вы объедините события в цепочку, я считаю, что это избавит от необходимости использовать,
.one
как это предлагается в другом месте в этой теме.Пример:
источник
Примечание: если вы программируете в ASP.NET, вы можете запустить скрипт, используя ScriptManager.RegisterStartupScript на C #:
Или просто введите сценарий на странице HTML, предложенной в других ответах.
источник
Я сею это где-то, работать отлично!
источник
Я немного опаздываю на вечеринку, но это прекрасно работает в IE11, Chrome, Firefox, без проблем с мышью (и без JQuery).
источник
focus
на поле, вы найдете несколько слушателей событий mouseup, прикрепляющихся ...Мое решение следующее:
Таким образом, mouseup обычно будет работать, но не сможет отменить выбор после получения фокуса при вводе
источник