У меня есть текст-привидение в текстовых полях, которые исчезают, когда вы сосредотачиваетесь на них, используя атрибут-заполнитель HTML5:
<input type="text" name="email" placeholder="Enter email"/>
Я хочу использовать тот же механизм для создания многострочного текста-заполнителя в текстовой области, возможно, что-то вроде этого:
<textarea name="story" placeholder="Enter story\n next line\n more"></textarea>
Но они \n
появляются в тексте и не вызывают новых строк ... Есть ли способ иметь многострочный заполнитель?
ОБНОВЛЕНИЕ : единственный способ, которым я получил это, работал, используя плагин jQuery Watermark , который принимает HTML в тексте заполнителя:
$('.textarea_class').watermark('Enter story<br/> * newline', {fallback: false});
white-space
чтобы убедиться, что оно установлено правильно, например, предварительная упаковка
работает везде, кроме Safari.Ответы:
Для
<textarea>
s в спецификации конкретно указано, что возврат каретки + разрывы строк в атрибуте заполнителя ДОЛЖНЫ отображаться браузером как разрывы строк.Также отражено в MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-placeholder
FWIW, когда я пробую Chrome 63.0.3239.132, он действительно работает так, как он говорит.
источник
В большинстве браузеров (см. Подробности ниже) редактирование заполнителя в javascript позволяет использовать многострочный заполнитель. Как уже было сказано, она не соответствует спецификации, и вы не должны ожидать, что она будет работать в будущем (правка: она работает).
Этот пример заменяет весь многострочный текстовый заполнитель.
Фрагмент JsFiddle .
Ожидаемый результатСудя по комментариям, некоторые браузеры принимают этот взлом, а другие нет.
Это результаты тестов, которые я провел (с browsertshots и browserserck )
С учетом этой статистики это означает, что она работает на 88,7% используемых в настоящее время (октябрь 2015 г.) браузеров.
Обновление : сегодня он работает не менее чем на 94,4% используемых в настоящее время (июль 2018 г.) браузеров.
источник
multiline
неmultiligne
WKWebView
. Впоследствии, любой браузер на IOS не будет правильно обрабатывать этот хак, покаWKWebView
не сделает.Я считаю, что если вы используете много пробелов, браузер обернет его правильно. Не беспокойтесь об использовании точного количества пробелов, просто добавьте туда много, и браузер должен правильно перейти к первому непробельному символу на следующей строке.
источник
Существует настоящий хак, который позволяет добавлять многострочные заполнители в браузеры Webkit, которые раньше работал в Chrome, но в более поздних версиях его удалили:
Сначала добавьте первую строку вашего заполнителя в HTML5, как обычно
затем добавьте оставшуюся часть строки с помощью css:
Если вы хотите сохранить свои строки в одном месте, вы можете попробовать следующее. Недостатком этого является то, что другие браузеры, кроме Chrome, Safari, WebKit и т. Д. даже не показывать первую строку:
затем добавьте оставшуюся часть строки с помощью css:
Демо Фиддл
Было бы очень здорово, если бы можно было получить похожую демонстрацию, работающую на Firefox.
источник
Если вы используете AngularJS, вы можете просто использовать фигурные скобки, чтобы поместить в нее все, что вы хотите: Вот скрипка.
источник
Согласно MDN ,
Это означает, что если вы просто перейдете на новую строку, она должна отображаться правильно. Т.е.
должен сделать так:
источник
Спецификация html5 явно отклоняет новые строки в поле заполнителя. Версии Webkit / будут / вставлять новые строки, когда они представлены с переводами строк в заполнителях, однако это некорректное поведение и на него нельзя полагаться.
Я думаю, абзацы не достаточно кратки для w3;)
источник
React:
Если вы используете React, вы можете сделать это следующим образом:
источник
Если у вас
textarea
статическая ширина, вы можете использовать комбинацию неразрывного пробела и автоматического переноса текста. Просто замените пробелы на nbsp для каждой строки и убедитесь, что две соседние строки не могут поместиться в одну. На практикеline length > cols/2
.Это не лучший способ, но может быть единственным кросс-браузерным решением.
источник
Вы можете попробовать использовать CSS, у меня это работает. Атрибут
placeholder=" "
обязателен здесь.источник
в php с функцией chr (13):
источник
Я не думаю, что это возможно только с помощью html / css. Это может быть возможно с использованием JavaScript или другого вида взлома - дополнительные пробелы для переноса текста на следующую строку и т. Д.
источник
Bootstrap + contenteditable + многострочный заполнитель
Демо: https://jsfiddle.net/39mptojs/4/
основываясь на ответах @cyrbil и @daniel
Использование Bootstrap, jQuery и https://github.com/gr2m/bootstrap-expandable-input для включения заполнителя в contenteditable.
Используя javascript «замена местозаполнителя» и добавление «css-пробел: pre» в css, отображается многострочный заполнитель.
Html:
Javascript:
Css:
источник
Решение Watermark в оригинальном посте прекрасно работает. Спасибо за это. В случае, если это кому-то нужно, вот угловая директива для него.
источник