我有几个表单,需要根据对特定问题的回答来显示和隐藏一些问题。我不想编写大量的重复代码,而是试图编写一个通用函数。如何在通用函数中选择单个单选按钮?
它适用于选择选项,但不适用于单选按钮。我添加了一个注释的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"));
})
我确实想到过,并尝试过。当您单击单选按钮时,它不显示/隐藏“b”和“c”。所以这没有奏效。 –
立即尝试更新的解决方案并让我们知道。 –
工作,谢谢。也许这是唯一的方法,尽管为每个问题写出使用泛型函数的相当多的东西。我认为有可能用OOP结构写出整个代码的更好的方法,但目前超出了我的技能范围。 –