編集:私の記事を読んだ後、私は問題が何であるか少し不明であると思う。それを再フレーズしようとしましょう:XHTML 1.0を有効にしたまま、テキストエリアに改行を追加できますか?
ユーザーは、フォームにtextareaフィールドを使用して私のサイトにコメントを残すことができます。 <br />
を使用してコメントに改行を追加することは可能です。コメントはmysqlデータベースに文字列として保存され(安全にするためにエスケープされます)、後でデータベースから取得してサイトに表示されます。コメントが表示されると、通常の改行は認識されません。
ユーザーはコメントを編集できます。その場合、元のコメントは修正するテキストエリアに表示されます(下の画像を参照)。問題は、<br />
が存在する場合、コードがXHTML 1.0として無効であることです(下のエラーメッセージを参照)。
他のタイプの改行を使用してコードを有効にすることはできますか?コメントに記載されているように、xml:space = "preserve"と組み合わされた通常の改行は機能しません(改行はtextareaフィールドに表示されますが、コメントは通常のテキストとしてサイトに表示されます)。
オリジナル質問:
私は、コメントを残すテキストエリアのフィールドを含むウェブのフォームを持っている、と私は<br />
を使用して改行を追加できるようにしたいです。以下は簡単な例です:
screen dump http://www.shipit.se/dump/textarea-dump.png
意図したとおりにそれが動作W3C検証サービスを使用している場合、しかし、それは過渡的なXHTML 1.0として検証しません。
- エラー行90、列1587:これは私が取得エラーです文書型は、上記の名前の要素がで発見された、ここで
…ription" rows="0" cols="0">Test<br />line break</textarea></dd><dt class="cha
要素 "BR" を許可していません。それが許されない文脈。これは、 "head"の内部ではなく "body"セクションの "style"要素や、重複する(許可されない)2つの要素など、入れ子になっていない要素が間違っていることを意味します。
このエラーの一般的な原因の1つは、HTMLドキュメントでのXHTML構文の使用です。 HTMLの暗黙的に閉じた要素の規則のために、このエラーはカスケード効果を生成する可能性があります。例えば、HTML文書の "head"セクションの "meta"と "link"にXHTMLの "self-closing"タグを使用すると、パーサーは "head"セクションの終わりと "body" ( "link"と "meta"は許可されていないため、報告されたエラー)。
ラインを作るための方法はあります壊れ有効なコード、または私は例えば表示するときに、後で<br />
に置き換えるその後、テキストエリアのフィールドに改行のために特定のタグを使用してのような(回避策を見つける必要がありませんコメント)?
@aspartame:画像を表示しました。ご心配なく。 – Welbog
@Welbog:ありがとう! – aspartame