如果在jQuery中选择了选项,则显示div

时间:2013-01-14 19:49:32

标签: javascript jquery css html

如果在我的页面上选择了2个选项之一,我正在尝试显示div。这是选择菜单:

<select id="graph_select">
<option id="pilot_form">Pilot Hours</option>
<option id="client_form">Client Hours</option>
</select>

这是第一个选择的第一个div:

<div id="pilot_graph_form" align="center" style="margin:0 auto; display:none;">
        <form action="?page=reporter" method="POST" name="graph_form">
            <p>From:</p>
            <select name="start_date">
                <cfloop query="date_worked_menu">
                    <option>#date_worked_menu.date_worked#</option>
                </cfloop>
            </select>
            <br />
            <br />
            <p>To:</p>
            <select name="end_date">
                <cfloop query="date_worked_menu">
                    <option>#date_worked_menu.date_worked#</option>
                </cfloop>   
            </select>
            <br />
            <input class="btn btn-success" type="Submit" name="submit_to_graph" value="Submit" id="submit_to_graph">
        </form>
    </div>

这是我的第二个选项的div:

<div id="client_graph_form" align="center" style="margin:0 auto; display:none;">
        <form action="?page=reporter" method="POST" name="graph_form_clients">
            <p>From:</p>
            <select name="client">
                <cfloop query="client_menu">
                    <option value="#client_menu.id#">#client_menu.name#</option>
                </cfloop>
            </select>
            <input class="btn btn-success" type="Submit" name="submit_to_graph" value="Submit" id="submit_to_graph">
        </form>
    </div>

这是我到目前为止的jQuery函数:

<script type="text/javascript">
$(function() {
    $("#graph_select").change(function() {
        if($("#pilot_form").is(":selected")) {
            $("#pilot_graph_form").css({"display":"block"});
        }
        else {
            $("#pilot_graph_form").css({"display":"none"});
        }
        if($("#client_form").is(":selected")) {
            $("#client_graph_form").css({"display":"block"});
        }
        else {
            $("#client_graph_form").css({"display":"none"});
        }
    });
});
</script>

4 个答案:

答案 0 :(得分:16)

首先,您应该将“选项”上的“id”更改为“value”。

然后你可以使用它:

$(function () {
  $("#graph_select").change(function() {
    var val = $(this).val();
    if(val === "pilot_form") {
        $("#pilot_graph_form").show();
        $("#client_graph_form").hide();
    }
    else if(val === "client_form") {
        $("#client_graph_form").show();
        $("#pilot_graph_form").hide();
    }
  });
});

答案 1 :(得分:6)

$(function() {
  $("#graph_select").change(function() {
    if ($("#pilot_form").is(":selected")) {
      $("#pilot_graph_form").show();
      $("#client_graph_form").hide();
    } else {
      $("#pilot_graph_form").hide();
      $("#client_graph_form").show();
    }
  }).trigger('change');
});

DEMO

答案 2 :(得分:3)

更改选择框时,您可以淡出所需的元素:

$('#graph_select').change(function(){
   var divID = $(this).children('option:selected').attr('id');
   if(divID == 'pilot_form'){
       $('#client_graph_form').fadeOut(1000,function(){
           $('#pilot_graph_form').fadeIn(500);
       });
   }else{
       $('#pilot_graph_form').fadeOut(1000,function(){
           $('#client_graph_form').fadeIn(500);
        });
   }
});

<强>更新
以其他方式: 如果你在选项中使用与div的id名称相同的名称会更好:

<select id="graph_select">
    <option class="pilot_graph_form">Pilot Hours</option>
    <option class="client_graph_form">Client Hours</option>
</select> 

为每个<div>

添加相同的课程
<div id="client_graph_form" class="forms"
...
<div id="pilot_graph_form" class="forms"

jQuery:

$('#graph_select').change(function(){
   var divID = $(this).children('option:selected').attr('class');
   $('.forms').fadeOut(1000,function(){
        $('#'+divID).fadeIn(500);
   });
});

答案 3 :(得分:0)

代码没问题,加载jquery可能有问题,我建议你使用

    $(window).load(function(){
        //Code
    });