我有几个复选框
foreach ($result as $set){
if ($set['Req']=='0')
?><input type="checkbox" name="select[]" value="1">
<?else?>
<input type="checkbox" name="select[]" value="1" checked READONLY DISABLED>?>
}
如果req!= 0,则复选框将是只读的,必须选中。如果不 , 允许用户检查或不检查
假设生成了四个复选框
checkbox1 : readonly
checkbox2 : select
checkbox3 : not select
checkbox4 : readonly
目前,select []仅为{1},因为readonly / not checked不会发布该值 。如何得到{1,1,0,1}的select []?谢谢
更新:
我如何知道未选中哪个复选框,如果用户没有选中该框,则添加select[] = 0
?
我能想到的一种方法是在这种情况下我得到数组的总长度= 4, 我现在可以得到它
但问题是如何将其添加到正确的位置?
currently i have select[] = {1,1,1} and $len=4;
答案 0 :(得分:1)
您可以执行以下操作,而不是禁用复选框:
<input type="checkbox" name="select[]" value="0" style="display:none;">
......或试试这个......
<input onfocus="this.blur();" type="checkbox" name="select[]" value="0">
...或者这......
//this function returns True if a given field is checked
function isChecked($chkname,$value){
if(!empty($_POST[$chkname])){
foreach($_POST[$chkname] as $chkval){
if($chkval == $value){
return true;
}
}
}
return false;
}
$checkboxValues = array(
array('milk','required'),
array('bread','not-required'),
array('juice','required')
);
$submittedValues = array();
foreach($item in $checkboxValues){
if(isChecked('select', $item)){
array_push($submittedValues, 1)
}else{
array_push($submittedValues, 0)
}
}
在您的HTML表单中...
foreach ($checkboxValues as $chkVals){
if ($chkVals[1]=='required')
?>
<input type="checkbox" name="select[]" value="<?=$chkVals[0];?>">
<?else?>
<input type="checkbox" name="select[]" value="<?=$chkVals[0];?>" checked READONLY DISABLED>
?>
}
为了实现这一点,每个选项值必须不同/唯一。
答案 1 :(得分:1)
为每个复选框提供一个明确的索引可能更容易:
<input type="checkbox" name="select[1]" value="1" />
<input type="checkbox" name="select[2]" value="1" />
<input type="checkbox" name="select[3]" value="1" />
<input type="checkbox" name="select[4]" value="1" />
使用isset
检查提交表单中设置的索引。未选中/禁用复选框不会出现在提交的表单中。
答案 2 :(得分:1)
试试这个:
<form name="myform" action="" method="post">
<input type="hidden" name="select[1]" value="">
<input type="checkbox" name="select[1]" value="1" checked readonly>
<input type="hidden" name="select[2]" value="">
<input type="checkbox" name="select[2]" value="1">
<input type="hidden" name="select[3]" value="">
<input type="checkbox" name="select[3]" value="1" checked readonly>
<input type="hidden" name="select[4]" value="">
<input type="checkbox" name="select[4]" value="1">
</form>
答案 3 :(得分:0)
您需要使用javascript将表单中的隐藏字段设置为您想要的值,因为请求中不会发送已禁用的字段。