实现无限自定义下拉联动需要借助jQuery和Ajax技术。

首先,需要在HTML中定义下拉框元素及其关联关系。例如:

<select id="select1">
    <option value="">请选择</option>
    <option value="1">选项1</option>
    <option value="2">选项2</option>
</select>
<select id="select2" disabled>
    <option value="">请选择</option>
</select>
<select id="select3" disabled>
    <option value="">请选择</option>
</select>

其中,select1为第一个下拉框,select2和select3为第二和第三个下拉框,都设置为disabled禁用状态。

接下来,需要编写jQuery代码,通过监听select1的change事件,触发Ajax请求,获取下一级下拉框的数据并填充到select2中。例如:

$('#select1').on('change', function() {
    var parentId = $(this).val();
    if (parentId) {
        $.ajax({
            url: '/api/select2',
            data: {parentId: parentId},
            success: function(data) {
                var options = '<option value="">请选择</option>';
                data.forEach(function(item) {
                    options += '<option value="' + item.id + '">' + item.name + '</option>';
                });
                $('#select2').html(options).prop('disabled', false);
            },
            error: function() {
                $('#select2').html('<option value="">请选择</option>').prop('disabled', true);
            }
        });
    } else {
        $('#select2, #select3').html('<option value="">请选择</option>').prop('disabled', true);
    }
});

其中,url为请求数据的接口地址,parentId为上级下拉框选中的值。请求成功后,通过遍历数据拼接

同样的,通过监听select2的change事件,再次触发Ajax请求,获取下一级下拉框的数据并填充到select3中。例如:

$('#select2').on('change', function() {
    var parentId = $(this).val();
    if (parentId) {
        $.ajax({
            url: '/api/select3',
            data: {parentId: parentId},
            success: function(data) {
                var options = '<option value="">请选择</option>';
                data.forEach(function(item) {
                    options += '<option value="' + item.id + '">' + item.name + '</option>';
                });
                $('#select3').html(options).prop('disabled', false);
            },
            error: function() {
                $('#select3').html('<option value="">请选择</option>').prop('disabled', true);
            }
        });
    } else {
        $('#select3').html('<option value="">请选择</option>').prop('disabled', true);
    }
});

同样的,url为请求数据的接口地址,parentId为上级下拉框选中的值。请求成功后,通过遍历数据拼接

最后,需要编写服务器端的接口代码,根据请求参数返回对应的数据。例如:

app.get('/api/select2', function(req, res) {
    var parentId = req.query.parentId;
    var data = [];
    if (parentId == 1) {
        data = [
            {id: 1, name: '选项2-1'},
            {id: 2, name: '选项2-2'}
        ];
    } else if (parentId == 2) {
        data = [
            {id: 3, name: '选项2-3'},
            {id: 4, name: '选项2-4'}
        ];
    }
    res.send(data);
});

app.get('/api/select3', function(req, res) {
    var parentId = req.query.parentId;
    var data = [];
    if (parentId == 1) {
        data = [
            {id: 1, name: '选项3-1'},
            {id: 2, name: '选项3-2'}
        ];
    } else if (parentId == 2) {
        data = [
            {id: 3, name: '选项3-3'},
            {id: 4, name: '选项3-4'}
        ];
    }
    res.send(data);
});

其中,根据parentId返回对应的数据。这里为了简化示例,直接在代码中写死数据,实际应用中需要从数据库或其他数据源中读取数据。

通过以上步骤,就可以实现无限自定义下拉联动了

jquery 无限自定义下拉联动

原文地址: https://www.cveoy.top/t/topic/hh3i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录