【问题标题】:jQuery form radio input detection on click点击时jQuery表单单选输入检测
【发布时间】:2015-05-27 03:20:02
【问题描述】:

我有一个带有内部部分的表单,基本上像这样布置(由于它在主目录中的样式,它必须像这样布置 - 很差 -):

<div id="q38_q42">
    <ul id="q38">
        <li>Q38</li>
        <li>
            <input class="my_input" name="q38" type="radio" value="Yes"/>Yes
        </li>
        <li>
            <input class="my_input" name="q38" type="radio" value="No"/>No
        </li>
    </ul>
    <ul id="q39">
        <li>Q39</li>
        <li>
            <input class="my_input" name="q39" type="radio" value="Yes"/>Yes
        </li>
        <li>
            <input class="my_input" name="q39" type="radio" value="No"/>No
        </li>
    </ul>
    ...ETC.
</div>
<div id="q43_hidden">
    <p>This is hidden</p>
</div>

我想让 jQuery 检测用户在 &lt;div id="q38_q42"&gt; 内的任何输入单击“否”并在不同位置显示另一个 div(默认情况下隐藏)。本质上,如果任何输入为“否”,我需要显示隐藏的 div,即使用户单击“是”的下一个问题也是如此。现在,如果用户在输入“否”后单击“是”,它会再次隐藏 div。这是js:

function showDiv(div){$(div).slideDown();}
function hideDiv(div){$(div).slideUp();}

$(document).ready(function () {
    $('.my_input').click(function () {
        if ($(this).val() == 'No') {
            showDiv('#q43_hidden');
        } else {
            hideDiv('#q43_hidden');
        }
    });
});

这是一个 JSFiddle:https://jsfiddle.net/82Lbhvjw/5/

【问题讨论】:

    标签: jquery html forms radio-button


    【解决方案1】:

    从 ul 中删除名称,因为 ul 和 input 具有相同的名称。 ul 不需要名称

    <ul name="q38" id="q38">
    
    <ul id="q38">
    

    另外,你的问题有点令人困惑。如果“否”,您想添加一个 div 还是为每个 div 添加一个 div?

    所以,修复 html 并为要检查的元素添加一个类...

    <div id="q38_q42">
        <ul id="q38">
            <li>Q38</li>
            <li>
                Yes
                <input class="my_input" name="q38" type="radio" value="Yes" />
            </li>
            <li>
                No
                <input class="my_input" name="q38" type="radio" value="No" />
            </li>
        </ul>
        <ul id="q39">
            <li>Q38</li>
            <li>
                Yes
                <input class="my_input" name="q39" type="radio" value="Yes" />
            </li>
            <li>
                No
                <input class="my_input" name="q39" type="radio" value="No" />
            </li>
        </ul>
    </div>
    <div id="error_div" style="background-color:red;display:none;">You clicked No! </div>
    

    现在如果要检查点击输入的值是“是”还是“否”,只需使用

    $(document).ready(function(){
        $('.my_input').click(function(){
            alert($(this).val() + " -- " + $(this).attr('name') )
        });
    });
    

    如果您需要检查是否选中了“否”,这将解决您的问题 并显示隐藏的 div

    $(document).ready(function(){
        $('.my_input').click(function(){
            var has_error = false;
            $('.my_input').each(function(){
                if($(this).val() == "No" && $(this).prop('checked')){
                    has_error = true;
                }
            });
            if(has_error==true){
                $("#error_div").show();
            }
            else{
                $("#error_div").hide();
            }
        });
    });
    

    在这里工作

    https://jsfiddle.net/82Lbhvjw/8/

    如果你愿意,也可以使用 $("input:checked")

    $(document).ready(function(){
        $('.my_input').click(function(){
            var has_error = false;
            $('input:checked').each(function(){
                if($(this).val() == "No"){
                    has_error = true;
                }
            });
            if(has_error==true){
                $("#error_div").show();
            }
            else{
                $("#error_div").hide();
            }
        });
    });
    

    【讨论】:

    • 越来越近了!我已经更新了这个问题,所以希望问题更清楚一点。感谢您的帮助!
    • 对不起。忽略小提琴 7 并移至 8 .. 我忘了保存它。但我认为它解决了你的问题
    • 我能够修改您的示例以完美满足我的需要。谢谢!
    • 我很高兴它有帮助 ;-)
    • 我只是想问另一个问题,但也许您也可以在这里快速提供帮助。你会如何让这个非特定功能激活 onclick 像这样:jsfiddle.net/82Lbhvjw/9
    猜你喜欢
    • 2015-02-11
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多