Самый элегантный способ заставить элемент TEXTAREA переносить строку, * независимо * от пробелов

Элементы Html Textarea переносятся только при достижении символа пробела или табуляции. Это нормально, пока пользователь не наберет достаточно длинного слова. Я ищу способ строго соблюдать разрывы строк (например: даже если это приводит к «loooooooooooo \ n ooooooooooong»).

Самый элегантный способ заставить элемент TEXTAREA переносить строку, * независимо * от пробелов

Лучшее, что я нашел, - это добавлять пространство юникода нулевой ширины после каждой буквы, но это нарушает операции копирования и вставки. Кто-нибудь знает способ лучше?

Примечание: здесь я имею в виду элемент «textarea» (т.е. тот, который ведет себя аналогично текстовому вводу), а не просто старый простой блок текста.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
22
0
36 824
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Есть нестандартный элемент wbr, который поддерживается как минимум

Firefox, http://developer.mozilla.org/En/HTML/Element

Internet Explorer, http://msdn.microsoft.com/en-us/library/ms535917(VS.85).aspx

и Opera.

afaik, вы не можете вставлять элементы html внутри текстового поля, так что это не сработает

username 01.03.2009 02:43

Ты прав. Но взгляните на исправления ... в это время не было упомянутого "текстового поля";)

VolkerK 01.03.2009 09:48

Я тестировал техники <wbr>, & # 8203; и &застенчивый;. Все три хорошо работали в IE 7, Firefox 3 и Chrome.

Единственный, который не сломал копирование / вставку, был тэг <wbr>.

afaik, вы не можете вставлять элементы html внутри текстового поля, так что это не сработает

username 01.03.2009 02:44
Ответ принят как подходящий

Параметры CSS word-wrap:break-word и text-wrap:unrestricted выглядят как функции CSS 3. Удачи в поиске способа сделать это в текущих реализациях.

только что понял, что Facebook довольно хорошо справляется со своими формами, мне нужно зайти туда и посмотреть, что они делают. Либо так, либо подождать, пока браузеры поддержат упомянутые вами атрибуты - мне трудно тратить тысячу строк javascript на то, что в конечном итоге будет так просто

username 04.03.2009 03:12

Это ненадолго (да, да, да, да)! Новые функции разработчика в Firefox 3.1 «перенос слов: это недавно поддерживаемое свойство позволяет содержимому указывать, могут ли строки быть разорваны внутри слов, чтобы предотвратить переполнение, когда неразрывная строка слишком длинна, чтобы поместиться в одной строке».

username 06.03.2009 01:01

Отлично! Я рад, что все идет быстро; это такая глупая функция, без которой нельзя обойтись.

Kim Reece 06.03.2009 09:40

Согласно моим тестам, среди текущих браузеров только Firefox имеет описанное поведение. Так что я думаю, вам лучше всего дождаться скорого выпуска Firefox 3.1, который решит вашу проблему :)

Разбиение длинных слов на ширину текстового поля:

1) для современных браузеров:

textarea { word-break: break-all; }

2) для совместимости с IE8 добавьте:

textarea { -ms-word-break: break-all; }

https://msdn.microsoft.com/en-us/library/ms531184%28v=vs.85%29.aspx

3) добавить хак совместимости с IE11:

Перенос слов в Internet Explorer 11 не работает

@media all and (-ms-high-contrast:none) {
*::-ms-backdrop, textarea { white-space: pre; } 
}

Этот код отлично работает:

-IE 11, Chrome 51, Firefox 46 (Windows 7);

-IE 8, Chrome 49, Firefox 18 (Windows Xp);

-Edge 12.10240, Opera 30 (Windows 10);

word-break: break-all сделал это! Tyvm

asgs 25.04.2017 17:20

Самый элегантный способ - использовать wrap = "soft" для переноса целых слов или wrap = "hard" для переноса по символам или wrap = "off" для того, чтобы не переносить вообще, хотя последний wrap = "off" часто не нужен, поскольку браузер автоматически использует его, как если бы он был wrap = "off".
ПРИМЕР:

<textarea name = "tbox" cols = "24" rows = "4" wrap = "soft"></textarea>

Другие вопросы по теме