2012-11-04 182 views
-1

如何取消選中複選框,如果選中了另一個複選框。如何取消選中複選框

有人可以幫忙。

謝謝。

<?php 

//limit for number of categories displayed per page 
$limit = 4; 

$categoriesNum= mysql_query("SELECT COUNT('categoryTopic') FROM categories"); 

//number of current page 
$page =(isset($_GET['page']))? (int) $_GET['page'] :1; 

//calculate the current page number 
$begin =($page - 1)* $limit; 

//number of pages needed. 
$pagesCount =ceil(mysql_result ($categoriesNum,0)/$limit); 

//Query up all the Categories with setting the Limit 
$CategoryQuery = mysql_query ("SELECT categoryTopic From categories ORDER BY categoryTopic LIMIT $begin, $limit"); 

//Place all categories in an array then loop through it displaying them one by one 
while ($query_rows = mysql_fetch_assoc($CategoryQuery)) 
{ 

    $category =$query_rows['categoryTopic']; 
    //echo $category; 
    //query all the subcategories that the current category has 
    $Sub = mysql_query ("SELECT categoryTopic FROM subcategories WHERE categoryTopic='$category'");    
    $Count = mysql_num_rows ($Sub); 

    echo '<table width="85%" border="1" cellpadding="0"; cellspacing="0" align="center"> 

    <tr>   
     <th width="23%" height="44" scope="col" align="left"> '.$query_rows['categoryTopic'].' <br><br><br></th> 
     <th width="24%" scope="col">'.$Count.'</th> 
     <th width="25%" scope="col"> 0 </th> 
     <th width="28%" scope="col"> <form name = "choose"> 
     <label><input type="checkbox" id ="check" value= '.$category.' onchange="handleChange(this);"></label> 
    </tr> 
</table>'; 
} 
?> 

<script type="text/jscript"> 
//this funciton will be called when user checks a check box. 

function handleChange(cb) { 
//get the selected category 
var category = cb.value; 

如果另一個被選中我得到新的值,但同時檢查兩個框。

回答

1

不要使用複選框,使用單選按鈕,並給他們所有相同的name

1

使用單選按鈕?

<input type="radio" name="NAME" /> 

哪裏NAME橫跨要互相影響的所有單選按鈕相同。

附註:您當前的代碼無效,因爲它生成具有相同ID的多個元素(check)。

+0

無法使用複選框? – user1785939

+0

謝謝。我將改用無線電 – user1785939

2

如果你只希望一次檢查一次,那麼單選按鈕似乎是更好的選擇,但如果你一次只需要一個或零,那麼複選框就沒有問題。

您的代碼當前正在生成無效的html,因爲它給每個複選框都提供相同的id。此外,您似乎正在創建在每行上打開<form>標籤而不匹配</form>標籤。

如果你給每個複選框共同class屬性:

<input type="checkbox" class="check" value= '.$category.' onchange="handleChange(this);"> 

...那麼你的JS可以使用.getElementsByClassName()來處理它們,並取消所有,但剛剛簽了一個:

function handleChange(cb) { 
    var cbs = document.getElementsByClassName("check"); 
    for (var i = 0; i < cbs.length; i++) 
     if (cbs[i] != cb) 
      cbs[i].checked = false; 
} 

演示:http://jsfiddle.net/33Gqu/

注意:對於要提交的選定值,您需要提供複選框name attri不像id,name可以重複多個元素。