【问题标题】:Only make button clickable when 1/3 + 1/3 radio options are selected仅在选择 1/3 + 1/3 单选选项时使按钮可点击
【发布时间】:2015-12-19 00:22:43
【问题描述】:

我如何才能使 html 底部的下一个 <button> 只有在 每个 <input type="radio"> 被选中时才可点击?另外,如何将它与我当前的功能一起应用?

按钮本身会触发一个 jquery,它将隐藏这个特定的字段集并显示另一个(见 javascript 底部)。

HTML:

<div id="q1">
<fieldset class="fiel" name="q1">
<?php  
    $tidlol=$_GET['team'];
    echo "<input type='hidden' name='teamid' value='$tidlol'>";
?>
<img class="img2" src="img/q1.svg" alt="communication">
<img class="img3" src="img/f1.svg" alt="communication">
<div class="qb">
    <div class="great">
        <p class="tq"><?php echo $q1awesome ?></p>
    </div>
    <div class="alone">
        <p class="tq"><?php echo $q1awful ?></p>
    </div>
</div>
<fieldset class="mama">
    <li>
        <label>
            <input type="radio"   name="trend1" value="Progressing" onchange="GrabTrend(this)" />
            <img src="upp.png">
        </label>
    </li>
    <li>
        <label>
            <input type="radio" name="trend1" value="Constant" onchange="GrabTrend(this)" />
            <img src="right.png">
        </label>
    </li>
    <li>
        <label>
            <input type="radio" name="trend1" value="Regressing" onchange="GrabTrend(this)" />
            <img src="down.png">
        </label>
    </li>
</fieldset>
<div id="answ">
    <div id="forklarning">
        <p class="fq"><b>Factors to consider</b>: <?php echo $ftc1 ?></p>
    </div>
    <li>
        <input type="radio" id="q1r1" name="q1" value="Awesome" onchange="GrabData(this)">
        <label class="button1" for="q1r1">Awesome</label>
    </li>
    <li>
        <input type="radio" id="q1r2" name="q1" value="Ok" onchange="GrabData(this)">
        <label class="button2" for="q1r2">Ok</label>
    </li> 
    <li>
        <input type="radio" id="q1r3" name="q1" value="Awful" onchange="GrabData(this)">
        <label class="button3" for="q1r3">Awful</label>
    </li>
    <br>
    <br>
    <div class="comment">
          <textarea name='q1comment' id='comment'></textarea>
    <br>

    </div>

    <div id="hideQ1" style="float:right;">
          <button class="next" type="button" name="hideQ1">Next</button>   
    </div>
</div>  
</fieldset>
</div> <!--Forgot to include the first div..-->
<script>
$(document).ready(
    function() {
        $("#hideQ1").click(function() {
            $("#q1").toggle();
            $("#q2").toggle();
        });
    });
</script>

编辑:

它必须检查特定字段集中的两个无线电检查,

<fieldset class="fiel" name="q1">

也就是说,当我单击“下一步”时,该字段集将隐藏,而另一个字段集将出现新的单选框。

编辑 2:

接下来的 div 是相同的,但在数字上 +1

<div id="q2" style="display:none;">
        <fieldset class="fiel" name="q2">
            <img class="img2" src="img/q2.svg" alt="communication">
            <img class="img3" src="img/f2.svg" alt="communication">
            <div class="qb">
                <div class="great">
                    <p class="tq"><?php echo $q2awesome ?></p> 
                </div>
                <div class="alone">
                    <p class="tq"><?php echo $q2awful ?></p>
                </div>
            </div>
            <fieldset class="mama">

                <li>
                    <label>
                        <input type="radio" name="trend2" value="Progressing" onchange="GrabTrend2(this)" />
                        <img src="upp.png">
                    </label>
                </li>
                <li>
                    <label>
                        <input type="radio" name="trend2" value="Constant" onchange="GrabTrend2(this)" />
                        <img src="right.png">
                    </label>
                </li>
                <li>
                    <label>
                        <input type="radio" name="trend2" value="Regressing" onchange="GrabTrend2(this)"/>
                        <img src="down.png">
                    </label>
                </li>
            </fieldset>
            <div id="answ">
                <div id="forklarning">
                    <p class="fq"><b>Factors to Consider </b>: <?php echo $ftc2 ?></p>
                </div>
                <li>
                    <input type="radio" id="q2r1" name="q2" value="Awesome" onchange="GrabData2(this)">
                    <label class="button1" for="q2r1">Awesome</label>
                </li>
                <li>
                    <input type="radio" id="q2r2" name="q2" value="Ok" onchange="GrabData2(this)">
                    <label class="button2" for="q2r2">Ok</label>
                </li> 
                <li>
                    <input type="radio" id="q2r3" name="q2" value="Awful" onchange="GrabData2(this)">
                    <label class="button3" for="q2r3">Awful</label>
                </li> 
                <br>
                <br>
                <div class="comment">
                    <textarea name='q2comment' id='comment'></textarea>             
                </div>

                <div id="hideQ2" style="float:right;">
                    <button class="next" type="button" name="hideQ2">Next</button>
                </div>
            </div>
        </fieldset>
    </div>

和 jQuery 2..

    //Show/hide questions on click Next
        $(document).ready(
            function() {
                $("#hideQ1").click(function() {
                    $("#q1").toggle();
                    $("#q2").toggle();
                });
            });
        $(document).ready(
            function() {
                $("#hideQ2").click(function() {
                    $("#q2").toggle();
                    $("#q3").toggle();
                });
            });

【问题讨论】:

标签: javascript jquery html json


【解决方案1】:

您可以将change 事件附加到后代input 元素,并确定是否至少选择了两个单选元素。然后根据这个布尔值设置button 元素的disabled 属性。

Example Here

$('fieldset button').attr('disabled', true);

$('fieldset input').on('change', function() {
  var disabled = $(this).closest('fieldset').find('input:checked').length < 2;
  $(this).closest('fieldset').find('button').attr('disabled', disabled);
});

【讨论】:

  • 但是问题是当我点击下一步时,这两个单选部分会隐藏,而另一个会出现(因此页面底部的功能),所以当两个被选中时,我会能够在不检查其余问题的情况下单击下一步
  • @MoMononoke 如果您在我提供的示例中提供 HTML 的其余部分,我将向您展示如何...如果没有该 HTML,我不确定您将如何定位它。
  • 天哪,好吧。不过真的很长,再问一个问题怎么样?
  • @MoMononoke 是的,这行得通.. 我只需要知道你到底在切换什么..
  • @MoMononoke 见this updated example。您最初需要禁用所有按钮元素。我建议为它们添加一个通用类,以便您也可以轻松选择它们..
【解决方案2】:

您应该检查最后一个字段集中检查的无线电输入计数,例如

var ACTIVE = false;

$("input").change(function(){
    ACTIVE = true;
    if($("fieldset").last().children("input:radio:checked").length != 1 ) 
  {
    ACTIVE = false;
  }

  $("#submit").prop("disabled", !ACTIVE);
})

Check out this edited fiddle

【讨论】:

  • 这是否意味着必须选中页面上的所有单选框部分才能单击下一步?如果我现在单击下一步,将出现两个带有新答案的新问题,所以这对我不起作用..
  • 是的,这确实意味着 - 很抱歉 - 我误解了你 - 查看我的编辑
  • 嗯,那些单选按钮似乎出于某种原因像复选框一样工作?检查我的编辑,看看我如何进入下一个问题
  • 他们没有名字 - 我也修改了 - 我不确定你现在的问题是什么
  • 非常感谢您的帮助。 4小时后上班,所以我得睡一觉。我明天晚上去看看!
猜你喜欢
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 2016-06-08
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
相关资源
最近更新 更多