Как сделать так, чтобы текстовое поле автоматически расширялось с помощью jQuery?
У меня есть текстовое поле для объяснения повестки дня собрания, поэтому я хочу расширить это текстовое поле, когда текст моей повестки дня будет увеличиваться в этой области текстового поля.
Ответы:
Я много пробовал, и этот отличный.Ссылка мертва. Более новая версия доступна здесь . См. Старую версию ниже.Вы можете попробовать, нажав и удерживая клавишу ввода в текстовом поле. Сравните эффект с другим плагином автоматического расширения текстового поля ....
редактировать на основе комментария
примечание: вы должны включить необходимые файлы js ...
Чтобы полоса прокрутки в текстовой области не мигала во время расширения / сжатия, вы также можете установить
overflow
значениеhidden
:Обновить:
Ссылка выше не работает. Но вы все равно можете получить здесь файлы javascript .
источник
Если вам не нужен плагин, есть очень простое решение
Посмотрите, как он работает в jsFiddle, который я использовал, чтобы ответить на другой вопрос о текстовом поле здесь .
Чтобы ответить на вопрос, делать это наоборот или уменьшать его размер по мере удаления текста: jsFiddle
@Jason разработал один здесь
источник
if (this.clientHeight < this.scrollHeight) { this.style.height = this.scrollHeight + 'px'; }
Увеличивает / уменьшает текстовое поле. В этой демонстрации для привязки событий используется jQuery, но это ни в коем случае не обязательно.
( нет поддержки IE - IE не реагирует на изменение атрибута строк )
ДЕМО СТРАНИЦА
HTML
CSS
javascript (обновлено)
источник
источник
Вы можете попробовать это
источник
Благодаря SpYk3HH я начал с его решения и превратил его в это решение, которое добавляет функцию сжатия и, как я полагаю, еще проще и быстрее.
Протестировано в текущем браузере Chrome, Firefox и Android 2.3.3.
В некоторых браузерах вы можете видеть мигание полос прокрутки. Добавьте этот CSS, чтобы решить эту проблему.
источник
1px
кажется лучше)Чтобы определить автоматически расширяемое текстовое поле, вам нужно сделать две вещи:
Вот функция ручной работы для выполнения задачи.
Прекрасно работает почти со всеми браузерами (<IE7) . Вот метод:
ЗДЕСЬ есть сообщение об этом.
источник
Раньше я использовал плагин jQuery Textarea Expander с хорошими результатами.
источник
Каждый должен попробовать этот плагин jQuery: xautoresize-jquery . Это действительно хорошо и должно решить вашу проблему.
источник
(Это не будет работать в Internet Explorer 9 или более ранней версии, так как он использует
input
событие)источник
Я только что построил эту функцию для расширения текстовых полей при загрузке страницы. Просто измените значение
each
на,keyup
и это произойдет при вводе текстового поля.Протестировано в Chrome, IE9 и Firefox. К сожалению, в Firefox есть эта ошибка, которая возвращает неверное значение для
scrollHeight
, поэтому приведенный выше код содержит (хакерский) обходной путь для нее.источник
Я исправил несколько ошибок в ответе Рейгеля (принятый ответ):
Остались некоторые вопросы, касающиеся пробелов. Я не вижу решения для двойных пробелов, они отображаются как одиночные пробелы в тени (рендеринг html). Этого нельзя избежать, используя & nbsp ;, потому что пробелы должны разорваться. Кроме того, текстовое поле разрывает строку после пробела, если для этого места нет места, оно прерывает строку в более ранней точке. Предложения приветствуются.
Исправленный код:
источник
Код SpYk3HH с добавлением для уменьшения размера.
источник
Это сработало для меня лучше:
источник
Кажется, что у людей есть очень проработанные решения ...
Вот как я это делаю:
Это будет работать с длинными строками, а также с разрывами строк .. увеличивается и уменьшается ..
источник
Я написал эту функцию jquery, которая, кажется, работает.
Однако вам нужно указать минимальную высоту в css, и если вы не хотите кодировать, она должна быть двухзначной. т.е. 12 пикселей;
источник
Для всех, кто использует плагин, опубликованный Рейгелем, имейте в виду, что это отключит функцию отмены в Internet Explorer (попробуйте демо).
Если это проблема для вас, я бы предложил вместо этого использовать плагин, опубликованный @richsage, поскольку он не страдает от этой проблемы. Дополнительную информацию см. Во втором пункте о поиске текстовой области максимального изменения размера .
источник
Еще есть очень крутой
bgrins/ExpandingTextareas (github)
проект, основанный на публикации Нила Дженкинса под названием Expanding Text Areas Made Elegant.источник
Я хотел анимацию и автоматическое сжатие. Комбинация, очевидно, сложна, потому что люди придумали для нее довольно сложные решения. Я тоже сделал его многотекстовым. И он не такой нелепо тяжелый, как плагин jQuery.
Я основывался на ответе vsync (и улучшении, которое он сделал для него), http://codepen.io/anon/pen/vlIwj - это код для моего улучшения.
HTML
CSS
JS
источник
На это есть много ответов, но я нашел что-то очень простое, прикрепил событие keyup к текстовому полю и проверил, что клавиша ввода нажата, код клавиши равен 13
keyPressHandler(e){
if(e.keyCode == 13){
e.target.rows = e.target.rows + 1;
}
}
Это добавит еще одну строку к текстовому полю, и вы сможете изменить ширину с помощью CSS.
источник
Допустим, вы пытаетесь сделать это с помощью Knockout ... вот как:
На странице:
Рассматриваемая модель:
Это должно работать, даже если у вас есть несколько текстовых полей, созданных с помощью Knockout foreach, как это делаю я.
источник
Простое решение:
HTML:
JS:
https://fiddle.jshell.net/7wsnwbzg/
источник
Самое простое решение:
HTML:
CSS:
js (jquery):
источник
Решение с чистым JS
https://jsfiddle.net/Samb102/cjqa2kf4/54/
источник
Это решение, которое я в итоге использовал. Мне нужно встроенное решение, и пока оно работает отлично:
источник
https://codepen.io/nanachi1/pen/rNNKrzQ
это должно работать.
источник
@Georgiy Ivankin сделал предложение в комментарии, я успешно его использовал :) -, но с небольшими изменениями:
Он перестает расширяться после достижения максимальной высоты 200 пикселей.
источник
Старый вопрос, но вы могли бы сделать что-то вроде этого:
HTML:
JQuery:
Таким образом, автоматическое изменение размера будет применяться к любому текстовому полю с классом «текстовая область». Также сжимается при удалении текста.
jsfiddle:
https://jsfiddle.net/rotaercz/46rhcqyn/
источник
Попробуй это:
источник
Простое решение jQuery:
HTML:
Перелив нужно скрыть . Изменение размер не является ни , если вы не хотитечтобы сделать его изменяемымпомощью мыши.
источник