这个问题在这里已有答案:
我遇到了问题,当在网页上没有“选中”时,尝试从复选框中获取默认的“no”值。但是,当我单击复选框时,只有“yes”值通过名称“testName”传递给表单。但我希望从request.form.getlist中得到结果,如[yes,yes,no,no]列表
<form action="{{url_for('show_select')}}" method="post">
{% for entry in entries %}
<tr>
<td>
<input name='testName' type='checkbox' onclick="checkboxtest();" value='No'>
</td>
</tr>
{%endfor %}
<div align="right">
<button type="submit" class="btn btn-primary">Go</button>
</div>
</form>
<script>
function checkboxtest(){
var x = document.getElementsByName("testName");
var i;
for (i = 0; i < x.length; i++) {
if (x[i].checked == true) {
x[i].value = "Yes";}
}
}
</script>
使用复选框的设计(已检查的是成功的,未选中的则不是),而不是尝试更改它们以不同的方式发送数据。
为每个复选框指定一个唯一值:
<fieldset>
<legend> What pets do you like? </legend>
<label><input type="checkbox" name="pet" value="cat"> Cats</label>
<label><input type="checkbox" name="pet" value="dog"> Dogs</label>
<label><input type="checkbox" name="pet" value="mouse"> Mice</label>
<label><input type="checkbox" name="pet" value="rabbit"> Rabbits</label>
</fieldset>
然后查看服务器上提交的值列表。
您可能希望在示例中使用类似entry.id
的值。
如果选中,则复选框值仅包含在表单数据中。否则,它根本不包括在内。因此,无法直接设置“是”或“否”的值。
无论您在何处处理此表单数据,都应将该字段的缺乏值解释为未选中。