【问题标题】:Changing options in select box based on different select options根据不同的选择选项更改选择框中的选项
【发布时间】:2011-03-01 06:15:39
【问题描述】:

我有 2 个选择选项。我想根据我在第一个选择选项中选择的内容更改第二个选择选项中的下拉选项。我如何在 jquery 中做到这一点?

<select id="Manage">
   <option value="a">A</option>
   <option value="b">B</option>
   <option value="c">C</option>
<select>

如果从第一个选择选项中选择了 A,则为第二个选择选项

<select id='selectA'>
   <option value="1">1</option>
   <option value="2">2</option>
</select>

现在如果从第一个选择选项中选择了 B

<select id='selectA'>
   <option value="3">3</option>
   <option value="4">4</option> 
</select>

【问题讨论】:

    标签: jquery html select options


    【解决方案1】:

    类似:

    $('#Manage').change(function() {
        var options = '';
        if($(this).val() == 'a') {
            options = '<option value="1">1</option><option value="2">2</option>';
        }
        else if ($(this).val() == 'b'){
            options = '<option value="3">3</option><option value="4">4</option>';
        }
    
        $('#selectA').html(options);
    });
    

    当然你可以有你的选择,例如存储在一个数组中,然后将它们组合起来,这取决于你。

    参考:.change().val()

    【讨论】:

    • 谢谢..它确实有效。我在某个地方少了一个分号。
    • 使用jquery mobile,我需要添加jQuery('select').selectmenu('refresh',true);
    【解决方案2】:

    您可以使用 3 种不同的技术来做到这一点:

    1. 选择第一个选项后,您会立即使用 AJAX 加载第二个选项的选项
    2. 您将第二个选择的所有选项保存在 JSON 对象中,然后在选择第一个选项后包含它
    3. 您预定义所有选择并显示/隐藏和禁用/启用其他选择

    第一个可能是最好的,因为您可以根据用户的第一个选择从数据库中获取值,并且您可以构建孔选择服务器端。

    【讨论】: