如何从复选框列表中仅选中一个复选框

时间:2016-10-14 14:28:16

标签: javascript php jquery checkbox

这里我正在从数据库中检索数据,我正在使用checkbox进行数据的插入,更新和删除。我的问题是,当我点击两个以上的复选框时,我也转到update.php页面,但我真正想要的是当我首先点击更新按钮时,它将检查是否只从列表中选择了一个复选框,如果不是警告消息应显示为仅选择一个复选框。请帮忙。谢谢 我在这里放了我的代码。

<!DOCTYPE html>
<html>
<head>
    <title>Insert Update Delete</title>
</head>
<body>
<form name="dataform" id="data" action="" method="get">
<?php
$connection = mysql_connect("localhost", "root", "");
$db = mysql_select_db("db_new", $connection);
$query=mysql_query("select * from student_info");
echo "<table>";
while($row=mysql_fetch_array($query))
{
    echo "<tr>";
    echo "<td>"; ?> <input type="checkbox" id="box" name="num[]" class="other" value="<?php echo $row["id"];?>" /> <?php echo "</td>";
    echo "<td>"; echo $row["roll_no"]; echo "</td>";
    echo "<td>"; echo $row["name"]; echo "</td>";
    echo "<td>"; echo $row["division"]; echo "</td>";
    echo "<td>"; echo $row["std"]; echo "</td>";
    echo "<td>"; echo $row["gender"]; echo "</td>";
    echo "<td>"; echo $row["subject"]; echo "</td>";
    echo "</tr>";
}
echo "</table>";
?>
    <input type="submit" name="insert" value="insert"/>
    <input type="submit" name="update" value="update"/>
    <input type="submit" name="delete" value="delete"/>
    </div>
</form>
<?php
if(isset($_GET["insert"]))
{
    $box = $_GET['num'];
    $count =count($box);
    if ($count == 0){
        header('Location:insert.php');
    }
    elseif($count == 1){
        header('Location:data.php');
    }
}
?>
<?php
if (isset($_GET['update'])){
    $box = $_GET['box'];
    $count =count($box);
    if($count == 0) {
        header('Location:data.php');
    }elseif($count == 1){
        header('Location:update.php');
    }
    if(!empty($_GET['num'])) {
        foreach($_GET['num'] as $id) {
            echo $id;
            header("location:update.php?id=".$id);
        }
    }
}

?>
<?php
if (isset($_GET['delete'])) {
    $box = $_GET['num'];
    $count = count($box);
    if($count == 0) {
        header('Location:data.php');
    }elseif($count == 1){
        header('Location:data.php');
    }
    if(!empty($_GET['num'])) {
        foreach($_GET['num'] as $id) {
            mysql_query("delete from student_info where id = $id");
        }
    }
}
?>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

您可以使用单选按钮代替复选框。

见示例

Use Radio Instead of CheckBox

或者,如果必须使用复选框,请执行以下操作:

$('input.example').on('change', function() {
    $('input.example').not(this).prop('checked', false);  
});

答案 1 :(得分:0)

我会使用一个单选按钮,但我不知道你的情况所以这是一个使用jQuery的解决方案。您想要选择checked的所有复选框,然后查看该数组的长度是否大于1。这是你需要的javascript代码和jsbin,如果你想看看它。

<强> http://jsbin.com/qakuzajaza/edit?js,output

$("#submitbutton").click(function() {

  var count = $("input[type=checkbox]:checked").length;
  if (count > 1) {
    alert("Only 1 can be selected");
  } else {
    // submit data
  }

});

答案 2 :(得分:0)

mov cx, 10

答案 3 :(得分:0)

这些方法或多或少相似。试试这个:

submitForm(); //according to an event you prefer (click some button or anchor , no button over $ .ajaks.
function submitForm(){
    var tag = document.getElementById("tdForm");
    var chkbx = $(tag).find("input[type='checkbox']:checked").length;
    if (chkbx !== 0) {
        if (chkbx > 1) {
            alert("more then 1");
        }else{
            alert("form submited"); //$(tag).submit();
        }
    }else{
        if (chkbx === 0) {
            alert("nothing cecked");
        }
    }
};

经测试适合我。希望能帮助到你! 虽然我认为单选按钮或之前的验证以及对填写表单规则的错误的拦截要便宜得多。