如果只读取而未选中,如何获取复选框值

时间:2012-04-15 05:50:22

标签: php html

我有几个复选框

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;

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将表单中的隐藏字段设置为您想要的值,因为请求中不会发送已禁用的字段。