<UL>
私の Web アプリ フレームワークは、無効なフィールドの直後の順序付けられていないリスト内の各フィールドのフォーム エラーをレンダリングします。私の問題は、エラーがフォームフィールドと同じ行にリストされるようにスタイルを設定できなかったことです。代わりに、改行が の前にレンダリングされます<UL>
。
これは、サーバーが決定した無効なフィールドを示す、スタイルを設定しようとしている html です。
<p>
<label for="id_email">Email</label>
<input id="id_email" type="text" name="email" />
<span class='field_required'> *</span>
<ul class="errorlist"><li>This field is required.</li></ul>
</p>
span
必須フィールドごとにアスタリスクを表示する「field_required」と、フォームが (サーバー上で) 検証されない場合にレンダリングされる「errorlist」との間の改行を防ぐにはどうすればよいですか?
現在、私はスタイリングしています:
span.field_required {color:red; display:inline;}
ul.errorlist {list-style-type: none; display:inline;}
ul.errorlist li {display: inline; color:red; }
更新: これまでご協力いただきありがとうございました。
私のフレームワーク(django)はデフォルトでエラーを<UL>
. 素晴らしい提案に従って、リストを独自のスタイルでラップしてみまし<p>
た<span>
。リストを でラップすることは<span>
、Firefox 3.0 では機能するようになりましたが、Safari 4.0 では機能しません。
Safari で要素を調べると、HTML ソースの外観ではない<UL>
にもかかわらず、段落が の直前で閉じられているように見えます。
クロスブラウザーのバグに遭遇しましたか? (いいえ。以下を参照してください!)
最終的な解決策: ご協力いただきありがとうございます。これが私が最終的に問題を修正した方法です:
<p>
label-field-error コンボの周りのタグを<div>
スタイル付きのに置き換えましたclear:both;
。W3C 仕様では a 内のブロック (私の場合はリスト) が禁止されていることを指摘してくれた jennyfofenny に感謝し<p>
ます。これが、Safari がリストの前に私の段落を自動的に閉じていた理由ですが、Firefox はそれをスライドさせました。
次に、リストのスタイルを次のように設定します。
ul.errorlist {list-style-type: none; display:inline; margin-left: 0; padding-left: 0;}
ul.errorlist li {display: inline; color:red; font-size: 0.8em; margin-left: 0px; padding-left: 10px;}