2012-04-15 33 views
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 

目前选择[]仅{1},因为,只读/未选中不会发布值为 。如何获得一个选择[]是{1,1,0,1}?谢谢

更新: 如何知道未选中哪个复选框,并在用户没有选中该复选框时添加select[] = 0?我能想到的

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

但问题是我怎么可以把它添加到正确的位置?

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

回答

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。未经检查/禁用的复选框将不会出现在提交的表格中。

+0

是啊,它更容易,如何添加'0',如果该项目不存在?假设总长= 4,[1] =>'1'和[3] =>'1',这意味着我需要添加[2] =>'0'和[4] =>'0' ?谢谢 – user782104 2012-04-15 06:53:40

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

为了这个工作,每个选项的值必须是不同的/独特

+0

通过这种方式,用户不知道选择什么。 – 2012-04-15 05:59:36

+0

它可以,我可以显示消息 – user782104 2012-04-15 06:02:57

+0

抱歉,但这仍然不能发布的价值,如果复选框未选中,简单地说,我想要的是:后选择[] = 0时,复选框未选中 – user782104 2012-04-15 06:18:25

0

您需要使用javascript将窗体中的隐藏字段设置为所需的值,因为请求中未发送禁用的字段。

+0

是的,但它会混淆价值。例如,我为复选框1添加隐藏框1,名称=选择[],发布结果将是双重 – user782104 2012-04-15 06:20:04

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> 
相关问题