选中复选框没有传递实际值?

时间:2017-12-06 12:22:51

标签: javascript jquery html checkbox

我的代码根据无线电字段检查2x复选框的值,使其等于true / false。我看到网页上的复选框是故障单。

但是,一旦它们通过HTML POST表单传递,它们就没有值,并且总是等于false。

如果我给复选框一个值“TRUE”,那么他们当然只有那个值。

我在这里缺少什么?

    <script>      
      $(function() {
  var MAIN= $("input[type='radio']");
  var marketingPhone = $("input[type='checkbox'][name='marketingPhone']");
  var marketingRobo = $("input[type='checkbox'][name='marketingRobo']");


    MAIN.on('change', function()
        {
        if ($(this).val() == "TRUE")  {
          marketingPhone.prop('checked',true);
          marketingRobo.prop('checked',true);
        } else {
          marketingPhone.prop('checked',false);
          marketingRobo.prop('checked',false); 
        }

    });
});
  </script>

字段如下:

        <input type="checkbox" name="marketingPhone" value=""/>
        <input type="checkbox" name="marketingRobo" value=""/> 

2 个答案:

答案 0 :(得分:1)

复选框,如果没有选中,则不会发布表格。

因此,如果您发布带有复选框的表单,即使它们有一些值但未检查它们,您也无法在$ _POST或$ _GET数组中获取复选框的值。

答案 1 :(得分:0)

您需要在HTML中指定value。如果选中复选框,则会发布value。这些值可以是任何值,并且绝对不同于用于prop() - 调用的真/假(这些只是意味着设置或清除复选标记&#39;)。

示例:

<input type="checkbox" name="marketingPhone" value="yes"/>
<input type="checkbox" name="marketingRobo" value="absolutely"/> 

选中这两个时,会发布:

marketingPhone=yes&marketingRobo=absolutely

如果未选中全部,则会从发布的数据中省略相应的name=value

如果你真的想要为每个复选框一直发布一个值(例如&#34; true&#34;或&#34; false&#34;),那么唯一的方法就是这样做是通过添加您自己控制的隐藏字段(每个复选框一个),使用脚本将隐藏字段的值设置为"true""false"。您也可以不设置复选框value以防止在接收端出现混淆。

另请注意,表单字段始终发布字符串,因此要么将它们视为文字字符串,要么将它们解析为接收端的布尔值。