【问题标题】:Populate radio button if checkbox is checked in HTML/JavaScript如果在 HTML/JavaScript 中选中复选框,则填充单选按钮
【发布时间】:2016-08-18 06:04:34
【问题描述】:

我正在尝试编写一个 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>

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

【问题讨论】:

  • 你能在你的 JS 代码中发布你到目前为止所做的事情吗?
  • 为什么你的单选按钮有不同的name 属性?收音机应该在组中使用,并且通过给出相同的name来定义一个组...
  • @TWFPSP 我还没有写任何 JS 代码。我对 JS 完全陌生。
  • @nnnnnn 啊!好的!我将 name 属性更改为具有相同的属性。
  • Stack Overflow 不是代码编写服务。尝试自己编写代码,如果遇到特定困难,请在此处提问。

标签: javascript jquery html checkbox radio


【解决方案1】:

这回答了您的问题。

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

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

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

This is a useful resource 关于如何轮询 (select) 不同类型的元素(例如,按 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>

Updated jsFiddle Demo

【讨论】:

    【解决方案2】:

    如果您为两个复选框组分配不同的类名,将更容易确定要做什么。

    这是一个代码示例,包括堆栈代码 sn-p 和 jsFiddle Demo (因为它们更容易让你摆弄)

    $('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>

    【讨论】:

    • 非常感谢!这正是我想要的。
    • 当然可以。再次感谢! :)
    • 嘿,我使用自己编写的 JS 代码更新了我的问题。你能帮我解决更新的问题吗?
    【解决方案3】:

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

    $(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)
             }    
         });
    });
    

    【讨论】:

    • 做一些工作,进行一些研究并调试它。只需进行一些更改,它应该可以根据您的需要工作。
    • 我不认为有人会像那样为您完成所有工作,因为您实际上并没有尝试编写任何 JS 代码。只需进行一些更改,此 sn-p 即可为您工作。
    【解决方案4】:

    一种简单的方法是在 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>
    

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 2016-08-23
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多