‹ввод› многострочный с поддержкой CSS

Есть ли способ получить поле <input /> в HTML для переноса строк, если текст длиннее поля с помощью CSS? Я не хочу использовать <textarea />, так как хочу, чтобы пользователи не вводили жесткие разрывы строк, нажимая клавишу ввода.


person Bob    schedule 24.08.2009    source источник


Ответы (5)


Нет простите. <input type=text> - это одна строка по определению. См. документ W3C Формы в документах HTML:

text
    Creates a single-line text input control.
person RichieHindle    schedule 24.08.2009

Используя элемент управления формы Dojo Dijit TextArea, основанный на TextArea, вы можете иметь поле ввода, которое начинается с одной строки и расширяется по мере того, как пользователь добавляет к нему.

См. его документацию.

person aehlke    schedule 24.08.2009

Вы не можете делать то, что хотите, только с помощью CSS, но вы можете использовать JavaScript, чтобы запретить пользователю вводить разрывы строк в поле <textarea>.

person Josh Leitzel    schedule 24.08.2009
comment
Он хочет ввод, который обертывает. Это звучит как текстовое поле для меня. Он просто не хотел, чтобы пользователь мог вводить разрывы строк, что можно было сделать с помощью JavaScript. - person Josh Leitzel; 25.08.2009

Посмотрите на это, http://www.echoecho.com/htmlforms08.htm.

Параметры обтекания — самая сложная часть текстовых областей. Если вы выключите обтекание, текст будет обрабатываться как одна длинная последовательность текста без разрывов строки. Если вы установите его в виртуальный, текст появится на вашей странице, как если бы он распознал разрывы строк, но когда форма будет отправлена, разрывы строк отключены. Если вы установите его на физический, текст будет представлен точно так же, как он отображается на экране, включая разрывы строк.

person pep180    schedule 28.11.2011

Лучше всего использовать текстовое поле (с возможностью автоматического увеличения, если хотите), а затем удалять новые строки при отправке формы. Используя php, это будет примерно так:

$text = str_replace(array("\n","\r"),'',$_POST['text_field']);

Это имело бы желаемый эффект блокировки символов новой строки. Как указывали другие, на самом деле невозможно получить многострочный ввод в поле ввода.

person Simon    schedule 25.08.2009