我有一个如下表格:
<form action="" method="post">
<input type="checkbox" id="status_1" name="status_1" value="1" />
<input type="checkbox" id="status_2" name="status_2" value="1" />
<input type="checkbox" id="status_3" name="status_3" value="1" />
</form>
Run Code Online (Sandbox Code Playgroud)
当我选中所有复选框并发布表单时,结果如下:
Array ([status_3] => 1 [status_2] => 1 [status_1] => 1 )
Run Code Online (Sandbox Code Playgroud)
然后我取消选中第二个复选框并发布表单,结果如下:
Array ( [status_3] => 1 [status_1] => 1 )
Run Code Online (Sandbox Code Playgroud)
当我取消选中第二个复选框时,是否可以在下面生成如下结果:
Array ( [status_3] => 1 [status_2] => 0 [status_1] => 1 )
Run Code Online (Sandbox Code Playgroud)
有想法吗?
谢谢你的帮助.
Roy*_* Bg 47
第一种方式 - 隐藏字段(缺点:用户可以操纵字段的值(但是也可以操纵复选框的值,所以它不是真正的问题,如果你只想要1或0))
<form action="" method="post">
<input type="hidden" name="status_1" value="0" />
<input type="checkbox" id="status_1" name="status_1" value="1" />
<input type="hidden" name="status_2" value="0" />
<input type="checkbox" id="status_2" name="status_2" value="1" />
<input type="hidden" name="status_3" value="0" />
<input type="checkbox" id="status_3" name="status_3" value="1" />
<input type="submit" />
</form>
<?php
var_dump($_POST);
/*
* checking only the second box outputs:
*
* array (size=3)
'status_1' => string '0' (length=1)
'status_2' => string '1' (length=1)
'status_3' => string '0' (length=1)
*/
Run Code Online (Sandbox Code Playgroud)
第二种方式 - 为非设置索引分配默认值:
<form action="" method="post">
<input type="checkbox" id="status_1" name="status_1" value="1" />
<input type="checkbox" id="status_2" name="status_2" value="1" />
<input type="checkbox" id="status_3" name="status_3" value="1" />
<input type="submit" />
</form>
<?php
for($i = 1; $i<=count($_POST); $i++) {
$_POST["status_$i"] = isset($_POST["status_$i"]) ? $_POST["status_$i"] : 0;
}
var_dump($_POST);
/**
* Here we will be checking only the third checkbox:
*
* array (size=3)
'status_3' => string '1' (length=1)
'status_1' => int 0
'status_2' => int 0
*/
Run Code Online (Sandbox Code Playgroud)
小智 9
我认为添加这样的隐藏字段会起作用
<input type="hidden" id="status_1_" name="status_1" value="0">
<input type="checkbox" id="status_1" name="status_1" value="1" />
<input type="hidden" id="status_2_" name="status_2" value="0">
<input type="checkbox" id="status_2" name="status_2" value="1" />
<input type="hidden" id="status_3_" name="status_3" value="0">
<input type="checkbox" id="status_3" name="status_3" value="1" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78479 次 |
| 最近记录: |