Я хотел бы создать простую функцию, которая добавляет текст в текстовую область в позиции курсора пользователя. Это должна быть чистая функция. Только основы. Я могу понять остальное.
javascript
textarea
JoshMWilliams
источник
источник
Ответы:
источник
} else {
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
selectionStart
это числовое значение, и поэтому его следует сравнивать,0
а не'0'
, и, вероятно, следует использовать===
Этот фрагмент может помочь вам в нескольких строках jQuery 1.9+: http://jsfiddle.net/4MBUG/2/
источник
Ради правильного Javascript
источник
this.value = ...
. Есть ли способ сохранить это?Новый ответ:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setRangeText
Однако я не уверен в поддержке этого браузера.
Старый ответ:
Чистая JS-модификация ответа Эрика Пукинскиса:
Если вы хотите изменить значение выделенного в данный момент текста во время ввода в том же поле (для автозаполнения или аналогичного эффекта), передайте
document.activeElement
в качестве первого параметра.Это не самый элегантный способ сделать это, но он довольно простой.
Примеры использования:
источник
Version 54.0.2813.0 canary (64-bit)
Chrome Canary 54.0.2813.0. Наконец, если вы хотите вставить его в текстовое поле по идентификатору, используйтеdocument.getElementById('insertyourIDhere')
вместоel
в функции.Erik Pukinskis
. Я обновлю ответ, чтобы лучше отразить это.Простое решение, которое работает в firefox, chrome, opera, safari и edge, но, вероятно, не будет работать в старых браузерах IE.
setRangeText
функция позволяет заменить текущий выбор предоставленным текстом или, если нет выбора, вставить текст в позицию курсора. Насколько я знаю, он поддерживается только firefox.Для других браузеров существует команда "insertText", которая влияет только на элемент html, в котором в данный момент находится фокус, и имеет такое же поведение, как
setRangeText
Частично навеян этой статьей
источник
execCommand
потому что он поддерживаетundo
и сделал insert-text-textarea . Нет поддержки IE, но меньшеexecCommand
MDN считает это устаревшим: developer.mozilla.org/en-US/docs/Web/API/Document/execCommand Я не знаю почему, кажется, это действительно полезно!Ответ Раба отлично работает, но не для Microsoft Edge, поэтому я добавил небольшую адаптацию для Edge:
https://jsfiddle.net/et9borp4/
источник
Мне нравится простой javascript, и у меня обычно есть jQuery. Вот что я придумал на основе mparkuk :
Вот демонстрация: http://codepen.io/erikpukinskis/pen/EjaaMY?editors=101
источник