【问题标题】:Can't pass default checkbox value to form [duplicate]无法将默认复选框值传递给表单[重复]
【发布时间】:2019-09-06 17:19:51
【问题描述】:

当我在网页上未“选中”时尝试从复选框中获取默认的“否”值时遇到了问题。 但是,当我单击复选框时,只有“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>

【问题讨论】:

  • 谢谢 Davidism,我意识到这是一个重复的问题。

标签: html flask


【解决方案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 之类的内容作为示例中的值。

【讨论】:

  • 嗨昆汀,我明白你的意思了,谢谢你的解释。
  • 其实这种方式可以得到默认值。但仅在第一个循环中该功能有效。 code code function checkboxtest1(){ if(document.getElementById("testName").checked) { document.getElementById('testNameHidden').disabled = true; } code
【解决方案2】:

复选框值仅在选中时才包含在表单数据中。否则,它根本不包括在内。因此,无法直接设置“是”或“否”的值。

无论您在何处处理此表单数据,都应将该字段的缺少值解释为未选中。

【讨论】:

  • 谢谢布拉德,所以我必须为该字段设置一堆未经检查的值。
猜你喜欢
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 2020-04-09
  • 2017-10-19
  • 2015-06-07
  • 2020-12-20
  • 1970-01-01
  • 2014-12-29
相关资源
最近更新 更多