首页  >  文章  >  后端开发  >  如何创建带有自动填充第二个菜单的级联下拉菜单?

如何创建带有自动填充第二个菜单的级联下拉菜单?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-21 06:50:30220浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn