2012-11-04 140 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可以重复多个元素。