フォーム内の一連のフィールドにいくつかのマークアップがあります。
<ul>
<li>
<label>Field label</label>
<ul>
<li>
<span>
<label>some label</label>
<input type="text" value="a" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<input type="text" value="b" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<input type="text" value="c" size="35" maxlength="35">
</span>
</li>
</ul>
</li>
</ul>
そしてそれらを配置するためのいくつかのCSS:
*{
position: relative;
}
span{
position: relative;
display: inline-block;
}
input{
float:left;
}
label{
float:left;
margin-top: 15px;
left: 70px;
}
li > ul{
margin-left: -100px;
max-width: 400px;
display: inline-block;
}
li > label{
float: left;
vertical-align: top;
margin: 0;
left: 0;
width: 120px;
display: inline-block;
}
これにより、このレイアウトが作成されます。これは、必要なものに最適です。
問題:特定のフィールドが正しく入力されていない場合、システムはエラーメッセージを生成し、次のようなマークアップが発生します。
<ul>
<li>
<label>Field label</label>
<ul>
<li>
<span>
<label>some label</label>
<div class="error">some error message.</div>
<input type="text" value="a" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<div class="error">some error message.</div>
<input type="text" value="b" size="35" maxlength="35">
</span>
</li>
<li>
<span>
<label>some label</label>
<div class="error">some error message.</div>
<input type="text" value="c" size="35" maxlength="35">
</span>
</li>
</ul>
</li>
</ul>
これにより、次のようになります。
代わりに、エラーメッセージを次のように表示したいと思います。
スパン内のラベルを絶対に配置してから、スパンの下部に揃えてみました。ただし、何らかの理由で、ラベルに。を付けても、入力されたテキストと常に重なっていますmargin-top
。
エラーメッセージが挿入されたときに、フォームを目的のレイアウトのようにするにはどうすればよいですか?