【发布时间】:2013-07-17 08:33:02
【问题描述】:
我通常按格式设置表单样式
<label for="CompanyNameTextBox">
<span>Company</span>
<input name="CompanyNameTextBox" type="text" id="CompanyNameTextBox" />
</label>
这样我可以像这样设置 CSS 样式:
.input[type=text] span
{
display: inline-block;
width: 200px;
}
我得到了一个很好的并排排列,我的标签位于表单元素的左侧。这适用于我应该添加的所有元素。
现在,我有一个字段:信用卡到期日期。
这很特别,我在一个标签中有两个选择列表:
<label>
<span>Expiry Date</span>
<select name="ExpiryDateMonthDropDownList" id="ExpiryDateMonthDropDownList">
...
</select>
<select name="ExpiryDateYearDropDownList" id="ExpiryDateYearDropDownList">
...
</select>
</label>
如果我尝试选择后者(年),它会默认选择第一个(月),即使我没有在标签上指定 for 属性。
所以问题是,我能做什么?如果我做错表格(我实际上不应该将input 放在label 中)或者我必须做一些愚蠢的解决方法,比如将第二个select 放在它自己的里面,我无法解决label.
【问题讨论】:
-
为什么不将元素移到标签之外呢?我不明白...执行此操作的正常方法是使用
label元素的for属性。你仍然会有相同的视觉输出,如果你点击标签,指定的元素将被聚焦。 -
@JohnKrommidas 我认为过去我发现了我目前正在使用的技术并坚持使用它,直到现在才成为问题。正如其他一些答案所述,在我尝试做一些与规范略有不同的事情之前,它似乎确实是一种有效的技术。