0

我有几个复选框

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 不会发布 value 。如何获得 {1,1,0,1} 的 select[] ?谢谢

select[] = 0 更新:如果用户没有选中该框,我怎么知道哪个复选框没有被选中并添加?

我能想到的一种方法是在这种情况下我得到数组的总长度=4,我现在可以得到它

但问题是我怎样才能将它添加到正确的位置?

currently i have select[] = {1,1,1} and $len=4;
4

4 回答 4

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>
        ?>
}

为了使它起作用,每个选项值必须是不同的/唯一的

于 2012-04-15T05:58:34.390 回答
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。未选中/禁用的复选框不会出现在提交的表单中。

于 2012-04-15T06:46:19.793 回答
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>
于 2012-04-15T07:03:23.750 回答
0

您需要使用 javascript 将表单中的隐藏字段设置为您想要的值,因为禁用字段不会在请求中发送。

于 2012-04-15T05:59:03.250 回答