2012-03-21 70 views
2

這是我的腳本:得到檢查和未選中的複選框重視

HTML代碼:

<script> 
function pickIt(pId){ 
    if(document.getElementById(pId).checked==true){ 
     document.getElementById(pId).checked=false; 
    }else{ 
     document.getElementById(pId).checked = true; 
    } 
    submitForm(); 
    return true; 
} 
</script> 
<img src="images/bagua-square.gif" border="0" usemap="#Map2" /> 
<map name="Map2" id="Map2"> 
    <area shape="rect" coords="201,14,284,100" onclick="pickIt(1);" /> 
    <area shape="rect" coords="202,104,284,190" onclick="pickIt(2);" /> 
    <area shape="rect" coords="202,195,284,283" onclick="pickIt(3);" /> 
</map> 
<div style="display:none;"> 
    <input type="checkbox" id="1" name="box[]" /> 
    <input type="checkbox" id="2" name="box[]" /> 
    <input type="checkbox" id="3" name="box[]" /> 
</div> 

PHP代碼:

<?php 
    print_r($_POST['box']); 
?> 

當我點擊框ID 1 的PICkit()功能打開復選框1至。並且php顯示數組(0 =>'on')

但是我也想獲得checkbox的值,這些值不會被檢查,因此php會顯示 array(0 =>'on',1 ='off' ,2 =>「關閉」)

其實我想用自己的狀態所有的複選框上關閉因爲我用這些ID在MySQL數據庫對或關閉更新記錄狀態。請指導 。

回答

4

複選框發送自己的價值,如果他們進行檢查和如果不是,它們根本就沒有發送。

你應該有:

<input type="checkbox" id="1" name="box[]" value="1" /> 
<input type="checkbox" id="2" name="box[]" value="2" /> 
<input type="checkbox" id="3" name="box[]" value="3" /> 

所以值將代替上是1,2和3,和。然後你可以知道哪些被檢查,因爲它們不會全都相同。

如果你真的想你的數據結構是array(0=>'on', 1=>'off', 2=>'off')那麼你可以做:

$foo = array(); 
for ($i = 1; $i <= 3; $i++) { 
    $foo[$i] = in_array($i, $_GET['box']) ? 'on' : 'off'; 
} 
+0

嗯......稍微靠近一點。它的意思是我必須先寫兩個sql查詢來更新所有記錄狀態才能設置,然後只爲那些在數組中的行設置狀態。 ( – 2012-03-21 15:21:54

+0

嗯,不,你不知道, – Quentin 2012-03-21 15:23:29

+0

謝謝你哥們,你已經解決了我的問題:) – 2012-03-21 16:26:52

1

一個複選框將被髮送到服務器(當表單提交),只有當它的檢查,否則它不會提交

也改變

onclick="pickIt('1');"/
+0

好吧,我已經改爲onclick =「pickIt('1');」但它仍然顯示舊的結果。 – 2012-03-21 15:08:57

+0

其實我想獲取所有複選框的狀態,因爲我在mysql數據庫中使用這些id來更新記錄狀態。請指導。 – 2012-03-21 15:11:39

0

兩個選項:

  1. 讓每複選框隱藏字段和值用JavaScript設置爲0或1當你(聯合國)檢查複選框。然後忽略您的$_POST中的「開」值。
  2. Php必須知道有多少(以及哪個)複選框,因此缺少的$_POST值是未經檢查的框。你可以用for循環來做到這一點。
+0

「Php必須知道有多少(和哪個)複選框」 - 只有當你告訴它。該信息不在提交的表單數據中。 「 – Quentin 2012-03-21 15:19:23

+1

」缺少的$ _POST值是未經檢查的框。「 - 因爲它們都具有相同的值,所以只能說出有多少是不存在的,而不是哪一個。 – Quentin 2012-03-21 15:19:53

+0

@Quentin: 1:是的,但這就是爲什麼表單緩存非常有用:) 2:對不起,我的意思是$ _POST keys。keys are all different,do they? – 2012-03-21 15:24:25