javascript - 使用另一个下拉列表操作下拉列表

标签 javascript jquery drop-down-menu

我是编程和 JavaScript 新手,所以我需要你们的帮助。

我有 2 个下拉列表,我试图通过 JavaScript 的帮助使用另一个下拉列表来操作一个下拉列表。两个下拉列表都包含时间(以小时为单位)、开始时间和结束时间。

下拉列表如下所示

<!-- start time -->
<div id="start">
    <p>Start time</p>
    <select name="select1" id="select1" >
        <option value="8:00">8:00</option>
        <option value="8:30">8:30</option>
        <option value="9:00">9:00</option>
        <option value="9:30">9:30</option>
    </select>
</div>

<!--end time -->
<div id="end">
    <p>End time</p>
    <select name="select2" id="select2">
        <option value="8:30">8:30</option>
        <option value="9:00">9:00</option>
        <option value="9:30">9:30</option>
        <option value="10:00">10:00</option>
    </select>
</div>

我想要完成的是确保结束时间不会在开始时间之前开始,并且开始时间到结束时间的限制为 2 小时。无论如何,有没有使用 JavaScript 来做到这一点?无论我如何搜索,我似乎都无法在互联网上找到解决方案。

编辑,这就是我的实际文档的样子。

<head>

                    <!-- title -->
    <title> Mycomputer </title>

                    <!-- css link -->
    <link rel="stylesheet" type="text/css" href="second_page.css">

                    <!-- date picker -->
        <meta charset="utf-8"/>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/jquery-1.10.2.js"></script>
        <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css">

    <script>
        $(function() {
        $( "#datepicker" ).datepicker({ dateFormat: 'dd/mm/yy',
        minDate: 0, maxDate: 30, showButtonPanel: true});
        });
    </script>






</head>



<body>

    <div id="greybackground">


                    <!-- banner image -->
    <img src="images/banners.jpg" id="banner"/>


                        <!-- buttons -->
    <form action="logout.php">
        <input type="submit" value="logout" class="logout-button"/>
    </form>

    <form action="user.php">
        <input type="submit" value="back" class="back-button"/>
    </form>


                    <!-- headings -->
    <div id="welcome">This is room <?php echo $g; ?></div>

    <div id="box1"></div>

    <div id="intro">1. Choose the computer you would like to book.</div>

    <div id="chooseone">Please choose only one from the following computers:</div>



    <div class="checkbox2">

                    <!-- form -->
        <form action="final_page.php" method="POST">

        <?php

            // to connect to database 
            require("user_connection.php");


            //if statement
            if ($g == C450){


            // checkbox populated with values from database
            $r = mysqli_query($connect, "SELECT * FROM `C450`");
            while ($line = mysqli_fetch_assoc($r)) {
                echo '<input type="radio" name="bike" 
              value="'.$line['computer_no'].'" checked><label>'.$line['computer_no'].'</label></br>';
            }
            }

        ?>
    </div>



    <div class="checkbox2">

        <?php

            // to connect to database 
            require("user_connection.php");


            //if statement
            if ($g == E300){


            // checkbox populated with values from database
            $s = mysqli_query($connect, "SELECT * FROM `E300`");
            while ($line = mysqli_fetch_assoc($s)) {
                echo '<input type="radio" name="bike" 
                    value="'.$line['computer_no'].'" checked><label>'.$line['computer_no'].'</label></br>';
            }
            }

        ?>

    </div>




    <div class="checkbox2">

        <?php

            // to connect to database 
            require("user_connection.php");


            //if statement
            if ($g == AL10){


            // checkbox populated with values from database
            $s = mysqli_query($connect, "SELECT * FROM `AL10`");
            while ($line = mysqli_fetch_assoc($s)) {
                echo '<input type="radio" name="bike" 
                    value="'.$line['computer_no'].'" checked><label>'.$line['computer_no'].'</label></br>';
            }
            }

        ?>

    </div>




                    <!-- Date -->
    <div id="box2"></div>
    <div id="date">2. Choose a single date you would like to book the room on.</div>

    <div id="groupdate">
    <div id="nametag">Date:</div>
    <div id="dateS"><input type="text" id="datepicker" name="datepicker"></div>
    </div>




                    <!-- Time -->
    <div id="box3"></div>
    <div id="time">3. Select the preferred start time.</div>

    <div id="grouptime">



            <!-- start time -->

<script>

$('#select1').on('change', function() {
  if($(this).val() > $('#select2').val())
    $('#select2').val($(this).val());
  $('#select2 option').each(function() {
    if($(this).attr('value') < $('#select1').val())
      {
        $(this).hide();
        }
    else
      $(this).show();
  });
});


</script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


     <div id="start">
        <p>Start time</p>
        <select name="select1" id="select1" >
            <option value="8:00">8:00</option>
            <option value="8:30">8:30</option>
            <option value="9:00">9:00</option>
            <option value="9:30">9:30</option>
            <option value="10:00">10:00</option>
            <option value="10:30">10:30</option>
            <option value="11:00">11:00</option>
            <option value="11:30">11:30</option>
            <option value="12:00">12:00</option>
            <option value="12:30">12:30</option>
            <option value="13:00">13:00</option>
            <option value="13:30">13:30</option>
            <option value="14:00">14:00</option>
            <option value="14:30">14:30</option>
            <option value="15:00">15:00</option>
            <option value="15:30">15:30</option>
            <option value="16:00">16:00</option>
            <option value="16:30">16:30</option>
            <option value="17:00">17:00</option>
            <option value="17:30">17:30</option>
            <option value="18:00">18:00</option>
            <option value="18:30">18:30</option>
            <option value="19:00">19:00</option>
            <option value="19:30">19:30</option>
            <option value="20:00">20:00</option>
            <option value="20:30">20:30</option>
            <option value="21:00">21:00</option>
            <option value="21:30">21:30</option>
        </select>
    </div>


            <!--end time -->
    <div id="end">
        <p>End time</p>
        <select name="select2" id="select2">
            <option value="8:30">8:30</option>
            <option value="9:00">9:00</option>
            <option value="9:30">9:30</option>
            <option value="10:00">10:00</option>
            <option value="10:30">10:30</option>
            <option value="11:00">11:00</option>
            <option value="11:30">11:30</option>
            <option value="12:00">12:00</option>
            <option value="12:30">12:30</option>
            <option value="13:00">13:00</option>
            <option value="13:30">13:30</option>
            <option value="14:00">14:00</option>
            <option value="14:30">14:30</option>
            <option value="15:00">15:00</option>
            <option value="15:30">15:30</option>
            <option value="16:00">16:00</option>
            <option value="16:30">16:30</option>
            <option value="17:00">17:00</option>
            <option value="17:30">17:30</option>
            <option value="18:00">18:00</option>
            <option value="18:30">18:30</option>
            <option value="19:00">19:00</option>
            <option value="19:30">19:30</option>
            <option value="20:00">20:00</option>
            <option value="20:30">20:30</option>
            <option value="21:00">21:00</option>
            <option value="21:30">21:30</option>
            <option value="22:00">22:00</option>
         </select>
    </div>

    </div>

    <div id="box4"></div>
    <div id="review"><p>Please review your booking before saving to make sure there are no </br>accidental error.</p></div>
    <input type="submit" id="save" name="next" Value="save" class="save"/>

    </form>



    <footer>
        <p>Copyright © 2016 MyComputer &nbsp; | &nbsp; Contact information: <a href="mailto:gurungmadan@hotmail.com">gurungmadan@hotmail.com</a></p>
    </footer>


    </div>

</body>

最佳答案

使用 select1 和 select2 上的 onchange 事件在用户更改它们的值时触发。 http://www.w3schools.com/jsref/event_onchange.asp

然后编写一个函数来检查每个选择的值

var select1 = document.getElementById("select1").value;
var select2 = document.getElementById("select2").value;

您可以使用正则表达式来分隔小时和分钟以便比较它们:http://www.w3schools.com/jsref/jsref_obj_regexp.asp

您可能想要使用日期对象来比较它们:http://www.w3schools.com/jsref/jsref_obj_date.asp但这只是一个选项,在您的情况下,我只会比较小时,然后如果需要,则比较分钟。

有很多方法可以做你想做的事:)

使用严格 Javascript 的一个示例:

function check(elt) {
    var select1 = document.getElementById("select1").value;
    var select2 = document.getElementById("select2").value;

    var regex = /([8-9]|10):([03]0)/;
    var match1 = regex.exec(select1);
    var match2 = regex.exec(select2);
    var hours1 = match1[1];
    var hours2 = match2[1];
    if(hours1 >= hours2) {
        var minutes1 = match1[2];
        var minutes2 = match2[2];
        if(minutes1 >= minutes2) {
            // do the changes you want here
            alert("Start time should be before End time!");
        }
    }
    }

关于javascript - 使用另一个下拉列表操作下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117231/

相关文章:

c# - 对 DropDownList 进行排序? - C#、ASP.NET

javascript - 如何防止函数在调整大小时创建新的事件窗口堆栈

javascript - 为什么我的类在运行时未定义。 Javascript 模块模式

jQuery 从数组中旋转类

css - 为移动网站设计谷歌翻译小部件

drop-down-menu - 禁用angular2中的选择

javascript - PHP 中的 NumberFormatter 与 JS 中的 NumberFormat

javascript - 如何在流中使用 ES8 异步/等待?

javascript - 类型错误 : Invalid attempt to destructure non-iterable instance React/Jest

javascript - 无法在 Asp.net 文件上传更改事件调用时保留文本框值?