简体   繁体   English

创建级联下拉组

[英]Creating a cascading dropdown group

I'm trying to create a group of dropdowns to create a "search". 我正在尝试创建一组下拉菜单以创建“搜索”。 Each dropdown should be hidden until the previous dropdown has been selected. 每个下拉菜单都应隐藏,直到选择了上一个下拉菜单。 The value of the previous selection is irrelevant to the values on the next dropdown. 上一个选择的值与下一个下拉列表中的值无关。 They should only just be hidden if the previous dropdown is still in the default value. 仅当先前的下拉列表仍为默认值时,才应隐藏它们。 Is there any way to make this possible? 有什么办法可以做到这一点? I've been able to hide the second dropdown but from the third and forward, I haven't been able to make them appear dynamically. 我已经能够隐藏第二个下拉列表,但是从第三个下拉列表中,我无法使其动态显示。

This is how all the dropdowns look without any css: 这是没有任何CSS的所有下拉菜单的外观: 在此处输入图片说明

I would like to have every dropdown after "Year" to be hidden, and after each dropdown, the next one would appear. 我希望隐藏“年份”之后的每个下拉列表,并且在每个下拉列表之后都将显示下一个下拉列表。

This is my current code: 这是我当前的代码:

     <form name="ftpquery" method="post" action="sendFTP.php">
        <select name="year">
          <option value="">Year</option>
            <?php for($i = 1992; $i < 2016; $i++) { ?>
          <option value = "<?php echo $i; ?>"><?php echo $i; ?></option>;
            <?php } ?>
        </select>

        <select  name = "julian">
          <option value = "">Julian</option>
            <?php
              for($i = 1; $i < 366; $i++){
            ?>
          <option value = "<?php echo $i ?>"><?php echo $i ?></option>;
            <?php } ?>
        </select>

        <select name = "station">
          <option value = "">Station</option>
          <?php 
            while ($row = mysqli_fetch_array($response)){
          ?>
          <option value = "<?php echo $row['Station'] ?>"><?php echo $row['Station'] ?></option>;
          <?php } ?>
        </select>

        <select name = "month">
          <option value = "">Month</option>
          <?php
            for($i = 1; $i < 13; $i++){
          ?>
          <option value = "<?php echo $i ?>"><?php echo $i ?></option>;
          <?php } ?>
        </select>

        <select name = "day">
          <option value = "">Day</option>
          <?php
            for($i = 1; $i <= 31; $i++){
          ?>
          <option value = "<?php echo $i ?>"><?php echo $i ?></option>;
          <?php } ?>
        </select>

        <select name = "hour">
          <option value = "">Hour</option>
          <?php
            for($i = 0; $i <= 23; $i++){
          ?>
          <option value = "<?php echo $i ?>"><?php echo $i ?></option>;
          <?php } ?>
        </select>
        <select name = "min">
          <option value = "">Min</option>
          <option value = "00"><?php echo "00" ?></option>;
          <option value = "15"><?php echo "15" ?></option>;
          <option value = "30"><?php echo "30" ?></option>;
          <option value = "45"><?php echo "45" ?></option>;
        </select>

        <select name = "version">
          <option value = "">Version</option>
          <option value = "a"><?php echo "a" ?></option>;
          <option value = "b"><?php echo "b" ?></option>;
        </select>

       <p>
         <input type="submit" value="Submit">   
       </p>
     </form>
   </body>

Is there any way to make this possible? 有什么办法可以做到这一点?

Thank you for your time and help! 感谢您的时间和帮助!

I'd run something in jQuery like this: 我会在jQuery中像这样运行一些东西:

<style>
    select.date-select {
        display: none;
    }
</style>

<script type="text/javascript">
function selectShowHide()
{
    // Loop through all the .date-select selects
    $("select.date-select").each(function() {
        if ($(this).val() == 0) {
            // If it has no value hide it
            $(this).next("select.date-select").hide();
        } else {
            // If it does show it
            $(this).next("select.date-select").show();
        }
    });
}

$(function(){
    // On load activate the show hide
    selectShowHide();

    // Show the first one
    $("select.date-select").first().show();

    // On change of select work out what to hide
    $("select.date-select").change(function(){
        selectShowHide();
    });
});

</script>

You'd need to give all of your selects a class of date-select: 您需要为所有选择提供日期选择类:

<select class="date-select">

</select>

And a fiddle: http://jsfiddle.net/hnwLqo7h/ 和一个小提琴: http : //jsfiddle.net/hnwLqo7h/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM