2012-04-15 35 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> 
相關問題