基本上我可以得到适用于勾选框(= 1)时的值,但我无法让它在未选中时发送默认值 0。
<input type="checkbox" name="post_friend" value="1">
我四处搜索,有人建议设置一个隐藏的复选框,但它对我不起作用。
<input type="hidden" name="post_friend" value="0">
你不能做这样的事情吗?
$checkbox = isset($_POST['post_friend']) ? $_POST['post_friend'] : 0 ;
因此,如果选中该复选框,则变量为 1。如果未选中,则变量赋值为 0
OP给出的原始方法应该可以工作,但是,值很可能会有所不同。
例如,
<input type="checkbox" name="post_friend" value="1">
<input type="hidden" name="post_friend" value="0">
在这种情况下["post_friend"] = 0
。
但是,在此示例中:
<input type="checkbox" checked="checked" name="post_friend" value="1">
<input type="hidden" name="post_friend" value="0">
大多数浏览器都会发送["post_friend"] = "1,0"
. 同一属性的多个值通常会在 http 请求中连接。
为此,您可以使用 String.Contains 找到 1。
但是,在这里,您应该真正评估您的输入是否应该是复选框,或者更合适的是单选输入。
试试下面的东西
<div class="col-xs-5 drinkingLeft">
<input type="checkbox" name="beer" id="beer"class="require-one col-xs-1" value="0"/>
<input id='beerHidden' type='hidden' value='0' name='beer'>
<label for="beer" class="col-xs-10">Beer </label>
</div>
$('#beer').on('change', function () {
this.value = this.checked ? 1 : 0;
}).change();
$("#submit").click(function () {
if(document.getElementById("beer").checked){
document.getElementById('beerHidden').disabled = true;
}
});
唯一可能的解决方案是:
<?php
// if data is posted, set value to 1, else to 0
$check_0 = isset($_POST['check'][0]) ? 1 : 0;
$check_1 = isset($_POST['check'][1]) ? 1 : 0;
?>
如果您想检查同一页面上的信息,请使用 JS 并检查 NULL 值...
HTML
<input type="checkbox" id="chkbox1">
jQuery
if( $("#chkbox1").is(':checked')){
value = "True";
}else{
value= "False";
}