在网页上未“选中”时尝试从复选框获取默认“否”值时遇到问题。 但是,当我单击复选框时,只有“是”值通过名称“ testName”传递给表单。 但我想从request.form.getlist中获取类似[是,是,否,否]列表的结果
<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>
答案 0 :(得分:1)
如果选中复选框值,则仅将其包含在表单数据中。否则,它根本不包括在内。因此,无法直接根据需要设置“是”或“否”的值。
无论何时处理此表单数据,都应将字段的值缺乏解释为未选中。
答案 1 :(得分:1)
与一起使用复选框的设计(即选中的复选框成功而未选中的复选框则不是),而不是尝试更改它们以其他方式发送数据。
为每个复选框赋予唯一值:
<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
之类的值。