我试图找出如何禁用"下一部分"按钮,直到所有三组单选按钮都已应答。我已经详细搜索了一个解决方案,但大多数都提到了提交表单的时间。我尝试对其进行配置,以便在所有问题都得到解答后启用该按钮。
此页面有三个面板,一次只能看到一个。当面板1可见时,面板2和3被隐藏。一旦面板1上的所有问题都得到解答,用户就会点击"下一部分"按钮,向上滑动第一部分,向下滑动第二部分。我遇到的麻烦就是验证......在启用按钮之前,确保每个面板上的所有问题都得到了解答。
这是我与之合作的缩短版本:
Q1
<div id="one">
<input type="radio" name="question01" value="Q1-A">
<input type="radio" name="question01" value="Q1-B">
<input type="radio" name="question01" value="Q1-C">
</div>
Q2
<div id="two">
<input type="radio" name="question02" value="Q2-A">
<input type="radio" name="question02" value="Q2-B">
<input type="radio" name="question02" value="Q2-C">
</div>Q3
<div id="three">
<input type="radio" name="question03" value="Q3-A">
<input type="radio" name="question03" value="Q3-B">
<input type="radio" name="question03" value="Q3-C">
</div>
<button class="btn btn-primary" type="button" id="submit1" disabled="true">Next section</button>
$(document).ready(function () {
var q01 = $('input[name=question01]');
var q02 = $('input[name=question02]');
var q03 = $('input[name=question03]');
validate();
$(q01, q02, q03).change(validate);
});
function validate() {
if ($(q01).is(':checked') && $(q02).is(':checked') && $(q03).is(':checked')) {
$(".btn#submit1").prop("disabled", false);
} else {
$(".btn#submit1").prop("disabled", true);
}
}
答案 0 :(得分:4)
我认为这就是你所需要的: http://jsfiddle.net/vss9D/4/
$(document).ready(function() {
var q01 = $('input[name=question01]');
var q02 = $('input[name=question02]');
var q03 = $('input[name=question03]');
validate();
$("input[type='radio']").change(validate);
function validate() {
if ($(q01).is(':checked') && $(q02).is(':checked') && $(q03).is(':checked')) {
$(".btn#submit1").removeAttr("disabled", false);
} else {
$(".btn#submit1").attr("disabled", true);
}
}
});
这里的重要部分是将“验证”功能绑定到无线电组。
$(q01, q02, q03).change(validate);
不是选择三个jQuery元素的有效方法。
您可以使用.add()函数选择多个jQuery变量(see this stack overflow question)