web-dev-qa-db-ja.com

<input> CSS経由で複数行対応

テキストがCSSを使用してフィールドより長い場合、HTMLの<input />-フィールドを取得して行を折り返す方法はありますか?ユーザーがEnterキーを押してハード改行を入力するのを避けたいので、<textarea />を使用したくありません。

16
Bob

いいえ、ごめんなさい。 <input type=text>は定義上1行です。 W3Cドキュメントを参照してください HTMLドキュメントのフォーム

text
    Creates a single-line text input control.
25
RichieHindle

TextAreaに基づくDojoのDijitTextAreaフォームコントロールを使用すると、1行で始まり、ユーザーが追加すると拡大する入力フィールドを作成できます。

そのドキュメント を参照してください。

3
aehlke

CSSだけではやりたいことはできませんが、JavaScriptを使用して、ユーザーが<textarea>フィールドに改行を入力できないようにすることができます。

3
Josh Leitzel

これを見てください、 http://www.echoecho.com/htmlforms08.htm

折り返しオプションは、テキスト領域の最も難しい部分です。折り返しをオフにすると、テキストは改行のない1つの長いテキストシーケンスとして処理されます。仮想に設定すると、テキストは改行を認識したかのようにページに表示されますが、フォームが送信されると、改行はオフになります。物理に設定すると、テキストは画面に表示されているとおりに送信されます。改行が含まれます。

3
pep180

最善の策は、textarea(必要に応じて自動拡張機能付き)を使用し、フォームが送信されたときに新しい行を削除することです。 phpを使用すると、次のようになります。

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

これには、改行文字をブロックするという望ましい効果があります。他の人が指摘しているように、入力フィールドで複数行の入力を取得することは実際には不可能です。

0
Simon