【问题标题】:Page first load, options did not update, how to solve?页面首次加载,选项没有更新,如何解决?
【发布时间】:2023-03-15 20:11:01
【问题描述】:

我有两个选择字段;

<label>Color:</label>    
<select id="color">
    <option value="red">Red</option>
    <option value="blue">Blue</option>
</select>

<label>Car:</label>
<select id="car"></select>

我想实现一个功能,如果颜色“red”被选中,更新car选择选项为“red car 1”“红车2”。如果选择颜色“Blue”,请将car 选项更新为“blue car 1”“blue car 2”

我通过以下方式实现此功能:

var updateOptions = function(carField, options) {
    carField.empty();
    for (var i = 0; i < options.length; i++) {
        carField.append("<option value=" + options[i] + ">" + options[i] + "</option>");
    }

};

var colorField = $('#color');
var carField = $('#car');

colorField.change(function() {
    if (colorField.val() === 'red') updateOptions(carField, ['red car 1', 'red car 2']);
    else if (colorField.val() === 'blue') updateOptions(carField, ['blue car 1', 'blue car 2']);
});

这里一切正常。唯一的问题是,car 选择选项只有在用户选择color 时才会更新。首次加载的页面不会更新car 选择选项。例如,“red”颜色是页面加载时默认选择的颜色,但页面加载后car字段为空。如何有效地摆脱这种情况?

【问题讨论】:

    标签: javascript jquery jquery-selectors jquery-events


    【解决方案1】:

    尝试添加此代码:(在任何函数之外)

    $(document).ready(function() {
      $('#color').change();
    });
    

    【讨论】:

    • @Mellon 你可以再添加一个$(document).ready() 查看测试用例:)
    • 是的,它有效,我发现我可以调用 $('#color').change() 而无需再次调用 "$(document).ready()",因为我已经这样做了在 $(document).ready() 中。
    • 干杯,很高兴我能帮上忙。 :-)
    【解决方案2】:

    在加载页面时进行这样的调用 -

    updateOptions(carField, ['red car 1','red car 2']);

    【讨论】:

    • 不,如果我选择“蓝色”并刷新页面,汽车选项将是“红色汽车1”和“红色汽车2”,这是错误的。
    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多