-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;

別のものが選択された場合、新しいものの値を取得しますが、2つのボックスが同時にチェックされます。

4

3 に答える 3

2

一度に 1 つだけチェックしたい場合は、ラジオ ボタンの方が適しているように思えますが、一度に 1 つまたは 0 つだけチェックしたい場合は、チェックボックスで問題ありません。

コードは現在、id各チェックボックスに同じ値を与えるため、無効な html を生成しています。<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とは異なりidname複数の要素に対して繰り返すことができます。

于 2012-11-04T02:03:12.120 に答える
1

チェックボックスを使用せず、ラジオボタンを使用して、すべて同じにしnameます。

于 2012-11-04T01:59:06.583 に答える
1

ラジオボタンを使用しますか?

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

NAME相互に影響を与えたいすべてのラジオ ボタンでどこが同じか。

補足: 現在のコードは、同じ ID ( check) を持つ複数の要素を生成するため、無効です。

于 2012-11-04T01:59:48.597 に答える