html - 使每个输入的标签可点击
问题描述
我有以下代码...
{%for row in odata%}
<div class="options">
<label for="option-text">{{row}}</label>
<input type="radio" id="option-text" name="option-text">
</div>
{%endfor%}
但出于某种原因,即使使用 for 循环,对于每个可用选项,默认情况下单击标签都会选择第一个选项(单选框)。为什么会这样,我怎样才能克服它?
解决方案
您id
一遍又一遍地重复使用相同的值。单击标签时应该激活哪一个?您的浏览器将选择此处属性中命名为 id的第一个for
元素,如果您为所有input
元素赋予相同的属性值id
并且为所有元素赋予label
相同的属性值,那么除了第一个被切换for
之外,您别无所求。input
生成唯一的 id 值;您可以使用for
循环特殊变量,例如为loop.index0
每个变量添加一个数字id
:
{%for row in odata%}
<div class="options">
<label for="option-text-{{loop.index0}}">{{row}}</label>
<input type="radio" id="option-text-{{loop.index0}}" name="option-text">
</div>
{%endfor%}
请注意,name
属性保持不变!这是故意的。但是,您可能希望为这些input
元素提供一个value
属性,以便浏览器在提交时将其发送回服务器。
另一种选择是完全放弃for
并嵌套标签<input>
内部:<label>..</label>
{%for row in odata%}
<div class="options">
<label>
{{row}} <input type="radio" name="option-text">
</label>
</div>
{%endfor%}
有关更多详细信息,请参阅MDN 文档。<label>
推荐阅读
- arrays - powershell 切断 repo 名称
- c# - 为什么我不能从我的 LINQ 子查询连接中选择数据?
- php - Wordpress wp_insert_post 在移动设备上多次触发
- go - 如何在golang中添加带有日期时间的秒数
- angular - 无法读取角度 4 中未定义的属性“0”
- ios - 在计算器中添加负数时出错
- spring - Hystrix中使用ThreadPool的优势
- python - 如何在python中访问json值
- javascript - 如何在反应中保存文件输入值
- python - Keras - 没有 ImageDataGenerator 的单像素分类