我的代码根据无线电字段检查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=""/>
答案 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
以防止在接收端出现混淆。
另请注意,表单字段始终发布字符串,因此要么将它们视为文字字符串,要么将它们解析为接收端的布尔值。