javascript - 禁用下一页按钮,直到回答所有单选按钮组

标签 javascript jquery validation radio-button

我正在尝试弄清楚如何禁用“下一节”按钮,直到所有三组单选按钮都已被回答。我已经详细搜索了一个解决方案,但大多数是指提交表单的时间。我正在尝试对其进行配置,以便在回答所有问题后启用该按钮。

此页面包含三个面板,一次只能显示一个。当面板一可见时,面板二和面板三隐藏。一旦第一个面板上的所有问题都得到回答,用户单击“下一节”按钮,该按钮会向上滑动第一个部分,然后向下滑动第二个部分。我遇到的问题是验证...确保在启用按钮之前回答每个面板上的所有问题。

这是我正在使用的一个非常简短的版本:

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);
    }
}

最佳答案

我认为这就是您所需要的: 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);
         }
     }
});



这里的重要部分是将“验证”函数绑定(bind)到 radio 组。

$(q01, q02, q03).change(validate); 不是选择三个 jQuery 元素的有效方式。

您可以使用 .add()选择多个 jQuery 变量的函数 ( see this stack overflow question )

关于javascript - 禁用下一页按钮,直到回答所有单选按钮组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259133/

相关文章:

javascript - 使用 javascript 隐藏/显示 HTML 表单(按下按钮时)

python - Django - 使用特殊表达式的 RegexValidator

javascript - jQuery 验证 - 在单击超链接按钮时验证表字段并显示错误消息摘要

javascript - 我不明白clearInterval()

jquery - 文本在 IE7 中不显示

javascript - 基于当前位置的单页隐藏/显示部分

java - 同时接受多个IntellijIdea的检查建议(都是同类型)

javascript - React Native 文件访问 api : blob. 数据在 android 上是 'undefined'

javascript - 按字母顺序排序 immutable.js

javascript - 在 javascript 单元测试中测试单行