Есть ли способ получить поле <input />
в HTML для переноса строк, если текст длиннее поля с помощью CSS? Я не хочу использовать <textarea />
, так как хочу, чтобы пользователи не вводили жесткие разрывы строк, нажимая клавишу ввода.
‹ввод› многострочный с поддержкой CSS
Ответы (5)
Нет простите. <input type=text>
- это одна строка по определению. См. документ W3C Формы в документах HTML:
text
Creates a single-line text input control.
Используя элемент управления формы Dojo Dijit TextArea, основанный на TextArea, вы можете иметь поле ввода, которое начинается с одной строки и расширяется по мере того, как пользователь добавляет к нему.
См. его документацию.
Вы не можете делать то, что хотите, только с помощью CSS, но вы можете использовать JavaScript, чтобы запретить пользователю вводить разрывы строк в поле <textarea>
.
Посмотрите на это, http://www.echoecho.com/htmlforms08.htm.
Параметры обтекания — самая сложная часть текстовых областей. Если вы выключите обтекание, текст будет обрабатываться как одна длинная последовательность текста без разрывов строки. Если вы установите его в виртуальный, текст появится на вашей странице, как если бы он распознал разрывы строк, но когда форма будет отправлена, разрывы строк отключены. Если вы установите его на физический, текст будет представлен точно так же, как он отображается на экране, включая разрывы строк.
Лучше всего использовать текстовое поле (с возможностью автоматического увеличения, если хотите), а затем удалять новые строки при отправке формы. Используя php, это будет примерно так:
$text = str_replace(array("\n","\r"),'',$_POST['text_field']);
Это имело бы желаемый эффект блокировки символов новой строки. Как указывали другие, на самом деле невозможно получить многострочный ввод в поле ввода.