php - 当第一个更改时重置第二个 jquery 下拉选择框

标签 php mysql ajax drop-down-menu

我使用以下脚本从数据库中获取记录,并使用 jquery、ajax 和 php 将它们放入选择框中。选择框也使用 Select 2 进行样式设置和添加功能 http://ivaynberg.github.io/select2/select-2.1.html#basics

如果我从第一个选择框中选择客户,然后从第二个选择框中选择车辆,则效果很好......如果我随后改变主意并选择其他公司,则车辆框将保持打开状态最后一次注册并且不会恢复为:

  <option>Select A Customers Vehicle</option>

如果我单击车辆选择框,我可以从公司中选择车辆,并且上次查询中的“幽灵车辆”消失,所以它确实有效,只是当我再次更改公司时我会喜欢它再次将车辆框重置回默认值,直到我选择车辆。

这是主页:

    <script src="js/jquery/jquery.js"></script>
    <script src="js/jqueryui/js/jquery-ui.js"></script>
       <link href="js/select2/select2.css" rel="stylesheet"/>
        <script src="js/select2/select2.js"></script>
         <script>
            $(document).ready(function() { $("select").select2(); });

        </script>
    <?php
    if (session_status() !== PHP_SESSION_ACTIVE) {session_start();}
    if (isset($_SESSION['key'])) {$sessionkey = $_SESSION['key'];}else {$sessionkey = '';}
    if ($sessionkey == 'sbhjbKA2bsbhjbKA209bhjbKA2bsbhjbKA209KaXff19u0bsbhjbKA209KaXff19u9Ka'){
    include 'connectmysqli.php';
         echo '<link rel="stylesheet" href="css/template/template.css" />';
    echo '<strong class="pagetitle">Add New Sale</strong>
     ';
    $saleID = rand().rand();
    $today = date("Y-m-d");
    echo '<form method="post" action="addsalesubmit.php">';
    echo '<input type="hidden" value="'.$saleID.'" name="saleID" id="saleID">';
    echo '<input type="hidden" value="'.$today.'" name="date" id="date">';
    ?>
    <html>
        <head>
            <meta http-equiv="Content-type" content="text/html; charset=utf-8">
            <title>Select test</title>
        <script type="text/javascript" charset="utf-8">
    $(document).ready(function(){
        $('#customer').on('change', function (){
            $.getJSON('select.php', {customerId: $(this).val()}, function(data){
                var options = '';
                for (var x = 0; x < data.length; x++) {
                    options += '<option value="' + data[x]['id'] + '">' + data[x]['reg'] + ' - ' + data[x]['make'] + ' - ' + data[x]['model'] + '</option>';
                }
                $('#vehicle').html(options);
            });
        });
    });
    </script>
        </head>
        <body>
        <br>
            <select id="customer">
            <option>Please Select / Search For A Customer</option>
            <?php
    $sql = <<<SQL
    SELECT *
    FROM `customers`
    SQL;
    if(!$result = $db->query($sql)){ die('There was an error running the query [' . $db->error . ']');}
    while($row = $result->fetch_assoc()){
    if ($row['bussinessname'] == ''){$name = $row['title'].' '.$name = $row['firstname'].' '.$name = $row['surname'];}else
    {$name = $row['bussinessname'];}
    echo '<option value="'.$row['customerID'].'">'.$name.'</option>';
    }
    echo '</select></p>';
            ?>
            </select>
            <br>
            <br>
        <select id="vehicle">
      <option>Select A Customers Vehicle</option>
    </select>
        </body>
    </html>
    <?php
    }
    else
    {echo '<h1 style="font-family:Verdana, Geneva, sans-serif; color:red;">Access Denied !</h1>';}
    ?>

这是执行所有获取操作的 php 脚本:

    <?php include 'connectmysqli.php'; ?>
    <?php
    $id = $_GET['customerId'];
    $sql = 'SELECT * FROM vehicles WHERE customerID = ' . (int)$id;
    $result = $db->query($sql);

    $json = array();
    while ($row = $result->fetch_assoc()) {
      $json[] = array(
        'id' => $row['vehicleID'],
        'reg' => $row['reg'],
        'make' => $row['make'],
        'model' => $row['model']
      );
    }
    echo json_encode($json);

    ?>

最佳答案

每次调用onchange时,首先清空第二个下拉列表

<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$('#customer').on('change', function (){
$('#vehicle').html("<option value=''>Select</option>");// add this on each call then add the options when data receives from the request
        $.getJSON('select.php', {customerId: $(this).val()}, function(data){
            var options = '';
            for (var x = 0; x < data.length; x++) {
                options += '<option value="' + data[x]['id'] + '">' + data[x]['reg'] + ' - ' + data[x]['make'] + ' - ' + data[x]['model'] + '</option>';
            }
            $('#vehicle').html(options);
          $("select").select2();
        });
    });
});
</script>

关于php - 当第一个更改时重置第二个 jquery 下拉选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17401157/

相关文章:

javascript - 如何从 URL 中删除哈希值而不使其立即滚动到顶部?

PHP 阻止直接访问文件但只允许登录文件的所有者

MySQL 查询当前 GMT 时间

mysql - SQL-使用一个元组中的值从另一个元组中获取值

mysql - 这个 SQL 查询有什么问题?发生了无意义的错误。

javascript - 使用 AJAX 将图像添加到 Bootstrap Carousel

php - 什么导致 PDO 错误在其他无缓冲查询处于事件状态时无法执行查询?

php - 如何在单列 MySQL 查询中设置所有值

php - 用零填充数组

javascript - 如果满足条件则发送ajax GET请求