如何在通用功能中选择单个单选按钮?

时间:2015-12-08 23:27:33

标签: jquery

我需要根据对特定问题的回答来展示和隐藏一些问题。我没有编写大量重复代码,而是尝试编写通用函数。

适用于选择选项,但不适用于单选按钮。我添加了一个注释的console.log语句,其中出现问题。我不知道如何选择用户点击的单选按钮,而不是所有单选按钮。在自定义代码中,我使用$(this)并且该工作正在使用,但不确定如何进行概括。

在这个例子中,如果#q1是'是'然后' q2'和' q3'应该显示,否则被隐藏。如果#a设置为' 1'然后#b和#c应显示,否则隐藏。

https://jsfiddle.net/mskppbjL/

HTML:

<div id="q1">
  Question 1
  <select>
    <option>Select</option>
    <option value="yes">Yes</option>
    <option value="no">No</option>
  </select>
</div>
<div id="q2">
  Question 2
  <input type="text" />
</div>
<div id="q3">
  Question 3
  <input type="radio" name="q3" value="0">0
  <input type="radio" name="q3" value="1">1
  <input type="radio" name="q3" value="2">2
</div>



<div id="a">
  <input type="radio" name="q3" value="0">0
  <input type="radio" name="q3" value="1" checked>1
  <input type="radio" name="q3" value="2">2
</div>
<div class="b">b</div>
<div class="c">c</div>

JS:

function set_related(element, value, related) {

  var element = element,
    value = value,
    related = related;

  function display() {
    console.log($(element).val());  // always returns 0 because not $(this) element but all 
    if ($(element).val() == value ? $(related).show() : $(related).hide());
  }

  $(document).ready(function() {
    display();
    $(element).change(display);
  })

}

$(document).ready(function() {
  set_related($("#q1 select"), "yes", $("#q2, #q3"));
  set_related($("#a input[type='radio']"), "1", $(".b, .c"));
})

2 个答案:

答案 0 :(得分:1)

编辑:

您的单选按钮功能调用应为

 $("#a input[type='radio']").click(function() {
  set_related($(this), "1", $(".b, .c"));
  });

DEMO

答案 1 :(得分:0)

您可以使用type属性选择单选按钮,以及所选元素的checked伪类,例如;

$('#q3 input[type="radio"]:checked');

在函数中你需要类似的东西;

$('#q1 input[type="radio"]').on('change', function(){
    if ($(this).val() == 'yes' )
    {
        $('#q2').show();
        $('#q3').show();
    }
    else
    {
        $('#q2').hide();
        $('#q3').hide();
    }
});