jquery - 根据下拉菜单显示/隐藏表单

标签 jquery forms select

我试图根据保管箱选择显示一种特定的表单。这是我到目前为止所拥有的: HTML:

                <select id='selector'>
                    <option value='option-1' id="opt1">Option 1</option>
                    <option value='option-2' id="opt2">Option 2</option>
                    <option value='option-3' id="opt3">Option 3</option>
                </select>



                <form action="" method="post" id="form1" class="form">
                    <input id="input_1" name="input_1" type="text"/>
                    <input id="input_2" name="input_2" type="text"/>
                    <input id="input_3" name="input_3" type="text"/>
                </form>​

                <form action="" method="post" id="form2" class="form">
                    <input id="input_4" name="input_1" type="text"/>
                    <input id="input_5" name="input_2" type="text"/>
                    <input id="input_6" name="input_3" type="text"/>
                </form>​

                <form action="" method="post" id="form3" class="form">
                    <input id="input_7" name="input_1" type="text"/>
                    <input id="input_8" name="input_2" type="text"/>
                    <input id="input_9" name="input_3" type="text"/>
                </form>​

和jquery:

    $select.change(function(){
        if($(this).val() == "opt1"){
            if($('#form1').is(":hidden")){
                $('#form1').show();            
            }        
            $('#form2').hide();
            $('#form3').hide(); 
        }
        if($(this).val() == "opt2"){
            if($('#form2').is(":hidden")){
                $('#form2').show();            
            }
            $('#form1').hide();
            $('#form3').hide(); 
        }
        if($(this).val() == "option3"){
            if($('#form3').is(":hidden")){
                $('#form3').show();            
            }
            $('#form1').hide();
            $('#form2').hide(); 
        }     
    });

我想将它用于不同的联系人类型,例如。 “获取报价”、“一般查询”、“发布反馈” - 除非您有更好的主意。感谢您的时间和帮助。

jsfiddle:here

这里的问题是这不起作用。它同时显示所有表单,并且 #selector 根本不影响任何表单的可见性。

最佳答案

我想这就是你所追求的 -

$(function() {
    var $select = $("#selector");
    $select.change(function () {
        if ($('#selector option:selected').attr("id") == "opt1") {
            if ($('#form1').is(":hidden")) {
                $('#form1').fadeIn(400);
            }
            $('#form2').hide();
            $('#form3').hide();
        }
        if ($('#selector option:selected').attr("id") == "opt2") {
            if ($('#form2').is(":hidden")) {
                $('#form2').fadeIn(400);
            }
            $('#form1').hide();
            $('#form3').hide();
        }
        if ($('#selector option:selected').attr("id") == "opt3") {
            if ($('#form3').is(":hidden")) {
                $('#form3').fadeIn(400);
            }
            $('#form1').hide();
            $('#form2').hide();
        }
    });
});

jsfiddle - http://jsfiddle.net/RY2vD/

/编辑

这是我的解决方法(一点重构) -

$(function () {
    hideForms();
    $("#form1").show();
    $("#selector").change(function () {
        hideForms();
        if ($('#selector option:selected').attr("id") == "opt1") {
            $('#form1').fadeIn(400);
        } else if ($('#selector option:selected').attr("id") == "opt2") {
            $('#form2').fadeIn(400);
        } else {
            $('#form3').fadeIn(400);
        }
    });
});

function hideForms() {
    $(".form").hide();
    // maybe some other stuff to do here
}

http://jsfiddle.net/xpL49/3/

关于jquery - 根据下拉菜单显示/隐藏表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478303/

相关文章:

css - windows 窗体使窗体从特定位置开始

javascript - 表单 onsubmit 无法正常工作

javascript - Meteor:按文本属性删除不起作用

mysql - 在 MySQL 中选择所有行都满足条件的地方

php - 使用两个键对数组进行排序,如果一个键的两个值相同则使用另一个键?

javascript - Yii 客户端验证不适用于 ajax 加载的表单

javascript - 算法 - 计算范围内的陷波值

mysql - 查询一对多对多表关系的最有效方法

jquery - Mouseleave隐藏元素?

javascript - 我可以在 angularjs 指令中使用 JQuery 插件吗?