如何建立具有自動填入第二個選單的級聯下拉選單?

Mary-Kate Olsen
發布: 2024-10-21 06:50:30
原創
219 人瀏覽過

How to Create a Cascading Dropdown Menu with Auto-Populating Second Menu?

級聯下拉式選單:根據第一個選擇自動填入第二個選單

在這個情況下,我們要建立兩個互連的下拉式選單,其中第二個選單中的選項根據第一個選單中的選擇動態變化。

初始HTML 結構:

<code class="html"><select name="category">
    <option value="0">None</option>
    <option value="1">First</option>
    <option value="2">Second</option>
    <option value="3">Third</option>
    <option value="4">Fourth</option>
</select>

<select name="items">
    <!-- Options will be populated dynamically -->
</select></code>
登入後複製

事件處理:

為了實現所需的功能,我們將在在第一個下拉清單中使用事件監聽器,以便在選擇變更時觸發Ajax 呼叫。

<code class="javascript"><script type="text/javascript">
    function changeItems(categoryId) {
        $.ajax({
            url: 'process.php?category=' + categoryId,
            success: function(data) {
                $("#items").html(data);
            }
        });
    }
</script></code>
登入後複製

處理 Ajax請求:

在 process.php 檔案中,我們將根據所選類別建立第二個下拉清單的選項。

<code class="php">$categoryId = $_GET['category'];

switch ($categoryId) {
    case 1:
        $options = array(
            'Smartphone', 'Charger'
        );
        break;
    case 2:
        $options = array(
            'Basketball', 'Volleyball'
        );
        break;
    // ...
}

foreach ($options as $option) {
    echo "<option value='$option'>$option</option>";
}</code>
登入後複製

動態更新第二個下拉清單:

Ajax 呼叫使用 process.php 中產生的新選項填入 #items 元素。

<code class="javascript">$("#items").html(data);</code>
登入後複製

不含資料庫的自訂實作:

如果您沒有資料庫,您可以手動定義陣列中每個類別的選項,並透過JavaScript 更新第二個下拉清單。

<code class="javascript">// Define options for each category
const categories = ['First', 'Second', 'Third', 'Fourth'];
const optionArrays = [
    ['Smartphone', 'Charger'],
    ['Basketball', 'Volleyball'],
    // ...
];

// Update second dropdown on category change
$(document).on('change', 'select[name="category"]', function() {
    const selectedCategory = $(this).val();
    const options = optionArrays[selectedCategory - 1]; // Subtract 1 to match array indices

    $('#items').empty();
    for (let i = 0; i < options.length; i++) {
        $('#items').append(`<option value="${options[i]}">${options[i]}</option>`);
    }
});</code>
登入後複製

以上是如何建立具有自動填入第二個選單的級聯下拉選單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!