如果在 HTML/JavaScript 中选中了复选框,则填充单选按钮

Populate radio button if checkbox is checked in HTML/JavaScript

本文关键字:复选框 单选按钮 填充 HTML JavaScript 如果      更新时间:2023-09-26

我正在尝试编写一个JavaScript代码,如果选中了某个组中的任何复选框,则应填充一个单选按钮。

以下是我正在处理的代码:

<html>
<head>
    <title>Radio buttons and checkboxes</title>
</head>
<body>
    <form>
        <h3>Radio Buttons</h3>
        <input type="radio" name="radio1" id="radio1"> Radio 1
        <br>
        <input type="radio" name="radio2" id="radio2">Radio 2
        <br>
        <br>
        <h3>Checkbox Groups</h3>
        <h4><u>Group 1</u></h4>
        <p align="center"><u>PD</u></p>
        <ul>
            <li><input type="checkbox" name="G1PD1">G1 PD1</li>
            <li><input type="checkbox" name="G1PD2">G1 PD2</li>
        </ul>
        <p align="center"><u>ID</u></p>
        <ul>
            <li><input type="checkbox" name="G1ID1">G1 ID1</li>
            <li><input type="checkbox" name="G1ID2">G1 ID2</li>
        </ul>
        <h4><u>Group 2</u></h4>
        <p align="center"><u>PD</u></p>
        <ul>
            <li><input type="checkbox" name="G2PD1">G2 PD1</li>
            <li><input type="checkbox" name="G2PD2">G2 PD2</li>
        </ul>
        <p align="center"><u>ID</u></p>
        <ul>
            <li><input type="checkbox" name="G2ID1">G2 ID1</li>
            <li><input type="checkbox" name="G2ID2">G2 ID2</li>
        </ul>
    </form>
</body>
</html>

这就是我希望 JavaScript 做的事情。如果选中组 1 和 2 中PD部分下的任何复选框,则应填充单选按钮Radio 1。同样,如果选中了组 1 和组 2 中"ID"部分下的任何复选框,则应填充单选按钮Radio 2

我如何为此编写jQuery或JavaScript代码?

更新

使用@gibberish的答案,我能够编写以下JS代码:

<script>
    $('input:checkbox').click(function(){
var cc = this.className;
if (cc=="pdcb"){
    $('#radio2').prop('checked',false);
    $('#radio1').prop('checked',true);
}else if (cc=="idcb"){
    $('#radio1').prop('checked',false);
    $('#radio2').prop('checked',true);
}
  else
  {
    $('#radio1').prop('checked',false);
    $('#radio2').prop('checked',false);
  }
});
</script>

我的新问题是,如果未选中任何复选框,如何取消选择两个单选按钮?

这回答了您问题的补充。

请注意,我使用了几种不同的方法来选择复选框/单选按钮。实际上,有两种方法:一次全部选择,以及分别选择PD和ID。

然后,我展示了几种不同的方法来取消选择单选按钮:页面上的所有单选按钮,通过指定每个 ID 的两个单选按钮......

希望随着项目的发展,您可以查看此答案并获得新的提示。

这是一个关于如何轮询(选择)不同类型的元素例如,按ID,按类,作为一个组等)的有用资源。请注意,jQuery使用CSS选择器,因此学习它们两次很有用。

$('input:checkbox').click(function(){
	var cc = this.className;
	if (cc=="pdcb"){
		$('#radio2').prop('checked',false);
		$('#radio1').prop('checked',true);
	}else if (cc=="idcb"){
		$('#radio1').prop('checked',false);
		$('#radio2').prop('checked',true);
	}
   //This is one way (gets them all)
   var num = $("[type='checkbox']:checked").length;
	alert(num);
	//This is another (gets each group)
	var lenPD = $('input[class=pdcb]:checked').length;
	var lenID = $('input[class=idcb]:checked').length;
	alert(lenPD +' / '+ lenID);
  
	//All three below methods work - choose your favorite
	//if (num==0) $('#radio1,#radio2').prop('checked',false);
	//if (lenPD==0 && lenID==0) $('input:radio').prop('checked',false);
	if (lenPD==0 && lenID==0) $('#radio1,#radio2').prop('checked',false);
	
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
   <h3>Radio Buttons</h3>
   <input type="radio" name="radio1" id="radio1"> Radio 1
   <br>
   <input type="radio" name="radio2" id="radio2">Radio 2
   <br>
   <br>
   <h3>Checkbox Groups</h3>
   <h4><u>Group 1</u></h4>
   <p align="center"><u>PD</u></p>
   <ul>
      <li>
         <input class="pdcb" type="checkbox" name="G1PD1">G1 PD1</li>
      <li>
         <input class="pdcb" type="checkbox" name="G1PD2">G1 PD2</li>
   </ul>
   <p align="center"><u>ID</u></p>
   <ul>
      <li>
         <input class="idcb" type="checkbox" name="G1ID1">G1 ID1</li>
      <li>
         <input class="idcb" type="checkbox" name="G1ID2">G1 ID2</li>
   </ul>
   <h4><u>Group 2</u></h4>
   <p align="center"><u>PD</u></p>
   <ul>
      <li>
         <input class="pdcb" type="checkbox" name="G2PD1">G2 PD1</li>
      <li>
         <input class="pdcb" type="checkbox" name="G2PD2">G2 PD2</li>
   </ul>
   <p align="center"><u>ID</u></p>
   <ul>
      <li>
         <input class="idcb" type="checkbox" name="G2ID1">G2 ID1</li>
      <li>
         <input class="idcb" type="checkbox" name="G2ID2">G2 ID2</li>
   </ul>
</form>

更新的 jsFiddle 演示

如果为两个复选框组分配不同的类名,则更容易确定要执行的操作。

这是一个代码示例,既有堆栈代码片段,也有 jsFiddle 演示(因为它们更容易摆弄

$('input:checkbox').click(function(){
	var cc = this.className;
	if (cc=="pdcb"){
		$('#radio2').prop('checked',false);
		$('#radio1').prop('checked',true);
	}else if (cc=="idcb"){
		$('#radio1').prop('checked',false);
		$('#radio2').prop('checked',true);
	}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
   <h3>Radio Buttons</h3>
   <input type="radio" name="radio1" id="radio1"> Radio 1
   <br>
   <input type="radio" name="radio2" id="radio2">Radio 2
   <br>
   <br>
   <h3>Checkbox Groups</h3>
   <h4><u>Group 1</u></h4>
   <p align="center"><u>PD</u></p>
   <ul>
      <li>
         <input class="pdcb" type="checkbox" name="G1PD1">G1 PD1</li>
      <li>
         <input class="pdcb" type="checkbox" name="G1PD2">G1 PD2</li>
   </ul>
   <p align="center"><u>ID</u></p>
   <ul>
      <li>
         <input class="idcb" type="checkbox" name="G1ID1">G1 ID1</li>
      <li>
         <input class="idcb" type="checkbox" name="G1ID2">G1 ID2</li>
   </ul>
   <h4><u>Group 2</u></h4>
   <p align="center"><u>PD</u></p>
   <ul>
      <li>
         <input class="pdcb" type="checkbox" name="G2PD1">G2 PD1</li>
      <li>
         <input class="pdcb" type="checkbox" name="G2PD2">G2 PD2</li>
   </ul>
   <p align="center"><u>ID</u></p>
   <ul>
      <li>
         <input class="idcb" type="checkbox" name="G2ID1">G2 ID1</li>
      <li>
         <input class="idcb" type="checkbox" name="G2ID2">G2 ID2</li>
   </ul>
</form>

不确定这是否有效,但应该让你知道该怎么做。如果需要,您还可以尝试在单选按钮和复选框上添加一些切换。

$(document).ready(function() {    
     $(":checkbox").change(function () {
         if($(this).is(":checked")) {
             var selection = $(this).parent().parent().prev().text();
             if(selection == "PD") 
                 $("#radio1").prop("checked", true);
             else
                 $("#radio2").prop("checked", true)
         }    
     });
});

一种简单的方法是在 onclick 事件上调用函数,将无线电控制 ID 作为参数传递。在下面使用函数编辑的代码。

<html>
<head>
    <script type="text/javascript">
        function checkRadio(checkBoxId) {
            var radio = document.getElementById(checkBoxId);
            if (!radio.checked)
                radio.checked = true;
        }
    </script>
    <title>Radio buttons and checkboxes</title>
</head>
<body>
    <form>
        <h3>Radio Buttons</h3>
        <input type="radio" name="radio1" id="radio1"> Radio 1
        <br>
        <input type="radio" name="radio2" id="radio2">Radio 2
        <br>
        <br>
        <h3>Checkbox Groups</h3>
        <h4><u>Group 1</u></h4>
        <p align="center"><u>PD</u></p>
        <ul>
            <li><input type="checkbox" name="G1PD1" onclick="checkRadio('radio1')">G1 PD1</li>
            <li><input type="checkbox" name="G1PD2" onclick="checkRadio('radio1')">G1 PD2</li>
        </ul>
        <p align="center"><u>ID</u></p>
        <ul>
            <li><input type="checkbox" name="G1ID1" onclick="checkRadio('radio2')">G1 ID1</li>
            <li><input type="checkbox" name="G1ID2" onclick="checkRadio('radio2')">G1 ID2</li>
        </ul>
        <h4><u>Group 2</u></h4>
        <p align="center"><u>PD</u></p>
        <ul>
            <li><input type="checkbox" name="G2PD1" onclick="checkRadio('radio1')">G2 PD1</li>
            <li><input type="checkbox" name="G2PD2" onclick="checkRadio('radio1')">G2 PD2</li>
        </ul>
        <p align="center"><u>ID</u></p>
        <ul>
            <li><input type="checkbox" name="G2ID1" onclick="checkRadio('radio2')">G2 ID1</li>
            <li><input type="checkbox" name="G2ID2" onclick="checkRadio('radio2')">G2 ID2</li>
        </ul>
    </form>
</body>
</html>