【问题标题】:Check if one of the radio buttons within a div is checked检查是否选中了 div 中的单选按钮之一
【发布时间】:2016-09-25 00:36:27
【问题描述】:

我在这里找到了这个脚本,它几乎可以满足我的需要(找出是否选中了 div 中的一个单选按钮),尽管它会为每个单选按钮提醒我,如果其中一个被选中,我只需要一个警报。

背景信息: 如果选中一个,我将显示下一个 div。如果不是,div 将不会显示。在我的系统顶部,单击选中的单选按钮将取消选中它,然后显示的 div 将被隐藏。

我的代码:

<div class="divtop">
    <input type="radio" name="r1" value="v1" />
    <input type="radio" name="r1" value="v2" />
    <input type="radio" name="r1" value="v3" />
<div> 

这是脚本:

$('.divtop input:radio').live('click', function(event) { 
  var div = $("div.divtop");
  var radiobuttons = div.find("input[type='radio']");
for (var i = 0; i < radiobuttons.length; i++) {
  if (radiobuttons[i].type === 'radio' && radiobuttons[i].checked) {
     alert ('on') // action
     } else { 
     alert ('off') // action
}} });

检查一个广播按钮时,如何调整此脚本只能获取一个警报?

该函数必须是通用的(不使用单选按钮名称),因为它将适用于具有不同单选按钮组的不同情况。

【问题讨论】:

  • 这是一件奇怪的事情。您将函数绑定到单选按钮的单击事件。当您单击时,您只能在一个组中选择一个单选按钮,那么有什么意义呢?换句话说,当不是单击单选按钮时意味着选择了一个?
  • @j08691 - 好吧,一开始它们都可以取消选中,但这仍然没有意义,因为至少有一个会在你第一次点击时被选中,之后你不能取消选中无论如何,所有这些都是真的吗?
  • @adeneo - 除非我们使用旧的重置按钮。有人还在用吗?
  • cmets 后面的解释:关键是如果选中一个,我将显示下一个 div。如果不是,div 将不会显示。最重要的是,在我的系统中,单击选中的单选按钮将取消选中它,然后显示的 div 将被隐藏。
  • 添加“break;”在您的警报('on')之后并删除其他。现在将您的 something.show() 放在警报和休息之间;你的 something.show() 可以替换为 hideAllDivs() 然后 something.show()

标签: jquery checked


【解决方案1】:

您可以检查第一个 div 是否检查了 radio,然后显示另一个 div。

$(document).ready(function(){
    $('.divtop > input:radio').change(function(){
      if($(this).is(":checked"))
      {
        $('.divMiddle').removeClass('hide');  
      }
    });
});
.hide
{
  display: none;  
} 
.show
{
  display: block;  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="divtop">
    <input type="radio" name="r1" value="v1" />ONE
    <input type="radio" name="r1" value="v2" />TWO
    <input type="radio" name="r1" value="v3" />THREE
<div>
<div class="divMiddle hide">
    <input type="radio" name="r11" value="v11" /> ONE
    <input type="radio" name="r11" value="v22" /> TWO
    <input type="radio" name="r11" value="v33" /> THREE
</div>

【讨论】:

  • 完美!谢谢@loading...如果单选按钮恢复为取消选中状态,我将如何再次隐藏 divMiddle?
  • @user3371049 看到我已经默认添加了隐藏类到 divMiddle div,如果你想隐藏那么你只需要添加那个类,否则只删除它。
【解决方案2】:

在回应您对您帖子的评论时,我突然想到您只需使用一些简单的 css 就可以实现您想要的:

[type="radio"], [type="radio"]:checked + .inner{
  display:block;
}

.inner{
  display:none
}
<div class="divtop">
    <input checked type="radio" name="r1" value="v1" />
    <div class="inner">ONE</div>
    <input type="radio" name="r1" value="v2" />
    <div class="inner">TWO</div>
    <input type="radio" name="r1" value="v3" />
    <div class="inner">THREE</div>
<div> 

【讨论】:

  • 听起来很聪明,我会试试的!
  • 它运作良好@andrew 但我的设置不同。除了三个按钮,只有一个div在div之后的班级内部,只有在检查其中一个按钮时才能显示。
  • 看起来用户正在加载...可能有适合您的解决方案:)
  • @user3371049:是你要找的吗,我已经发布了答案。
猜你喜欢
  • 2018-12-12
  • 2016-09-26
  • 2012-05-03
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多