jquery 选择两个不同单选按钮组时显示div

nfzehxib  于 2022-12-18  发布在  jQuery
关注(0)|答案(3)|浏览(156)

我试图在选择两个不同的单选按钮时显示隐藏的div;单选按钮在不同的组中并且有不同的ID。2所以用户将选择一个特定的单选按钮来显示此内容。3我希望用JQuery来实现这一点。
我希望用户在进行特定的单选选择时,在不同的单选组中呈现特定的DIV内容。

<script>
 $(document).ready(function () {
   $('[name="group1"], [name="group2"]').click(function(){
     if ($(this).attr("id") == "option1") && ($(this).attr("id") == "option2")
    {
       $('#test-display').show();
     } else {
       $("#test-display").hide();
       }
      });
   });
                           
  </script>
<div id="test-display" class="text-white" style="display:none ;">
   PLEASE SHOW ME
   </div>
   
<div>
 <input type="radio" name="group1" id="option1">
  </div>
  <div>
<input type="radio" name="group2" id="option2">
   </div>
pgpifvop

pgpifvop1#

您可以只使用javascript而不使用jQuery来实现这一点。(**edit:**我只是想说,如果您只想使用jQuery,同样的逻辑也可以在jQuery中实现,但在这里没有必要。)
首先你需要得到那些你想要的单选按钮,当启用时应该显示隐藏的div,添加事件监听器到他们,并检查是否都启用了,然后改变隐藏的div的css属性。
查看下面的代码示例:
这里说,当我们选择组1的第一个单选按钮和组2的第三个单选按钮时,我应该显示隐藏的div,否则我不应该。

$('input[type=radio]').on("change", buttonChanged);

function buttonChanged() {
  if ($("#group1_option1").is(':checked') && $("#group2_option3").is(':checked')) {
    $("#test-display").show();
  } else {
    $("#test-display").hide();
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>

<div id="test-display" class="text-white" style="display:none;">
  PLEASE SHOW ME
</div>

<div>
  <span>Group 1:</span>
  <input type="radio" name="group1" id="group1_option1">
  <input type="radio" name="group1" id="group1_option2">
</div>
<div>
  <span>Group 2:</span>
  <input type="radio" name="group2" id="group2_option1">
  <input type="radio" name="group2" id="group2_option2">
  <input type="radio" name="group2" id="group2_option3">
</div>
oogrdqng

oogrdqng2#

上面的解决方案是完全有效的,但是如果你想使用JQuery,我给你这个解决方案:

<div id="hidden_div" class="text-white" >
    <p>ALL RADIOS SELECTED</p>
</div>

<div>
    <input type="radio" name="group1" id="group1_radio1">
</div>
<div>
    <input type="radio" name="group1" id="group1_radio2">
</div>

<div>
    <input type="radio" name="group2" id="group2_radio1">
</div>
<div>
    <input type="radio" name="group2" id="group2_radio2">
</div>

<script src="https://code.jquery.com/jquery-3.6.1.min.js" crossorigin="anonymous"></script>
<script>
    $(document).ready(function () {
        // hide the div
        $('#hidden_div').hide();
        // when all radio groups are selected, show the hidden div
        $('input[type=radio]').change(function () {
            // get the number of checked radio buttons in each group
            var group1 = $('input[name=group1]:checked').length;
            var group2 = $('input[name=group2]:checked').length;
            // if both groups have a radio button selected, show the div
            if (group1 > 0 && group2 > 0) {
                $('#hidden_div').show();
            }
        });
    });                    
</script>

我为测试添加了一些额外的无线电设备,只是为了再次检查是否有无线电设备工作正常。您的想法是正确的,但是JQuery的实现并不完全正确。
我写了一些关于我的解决方案如何工作的评论,但这里是一个快速回顾。
1.不用样式来隐藏div,直接用JQuery来隐藏
1.当收音机发生变化时,触发该功能
1.获取每个单选按钮组并找出它们的长度(这可以让我们知道它是否被选中)
1.如果长度大于1,显示它!

q3qa4bjr

q3qa4bjr3#

您可以通过将condition作为参数应用于.toggle()来使用它。
检查以下内容:

$('input[type=radio]').on('click', function() {
  $("#test-display").toggle(($("#option1").is(':checked') && $("#option2").is(':checked')));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="test-display" class="text-white" style="display:none;">
  PLEASE SHOW ME
</div>

<div>
  <span>Group 1:</span>
  <input type="radio" name="group1" id="option1">
</div>
<div>
  <span>Group 2:</span>
  <input type="radio" name="group2" id="option2">
</div>

相关问题