jquery,javascript,更新下拉列表选项,但保留选定的值

时间:2011-06-09 16:00:32

标签: javascript jquery

大脑现在不能正常工作。有人帮我填补空白。

需要选择当前选定的值,重新填充选项,然后选择上一个选项(如果它仍在列表中)。

为了方便起见,新值和之前选择的值将具有相同的名称属性,假设它在更新后仍在列表中,并且名称对于选项列表始终是唯一的。

//assume Options is a globally defined var for this example with format: 
// [{"display":"something", "value": "something's value"}, etc.. ]
function LazyLoadOptionsIntoSelect($select, options)
{
    //get current option


    //repopulate options
    $select.html("");
    $("<option>").text("--Select a File--")
                .appendTo($select);
    $.each(options, function()
    {
        var item = this;
        $("<option>").attr("name", function () { return item.display; })
                .val(function () { return item.value; })
                .text(item.display)
                .appendTo($select);
    });

    //select previously selected option if still in list

}

$(".lazyloadedselect", "#context").live("focus", function() 
{  
    LazyLoadOptionsIntoSelect($(this), Options);
});
编辑:我的代码出错,与问题无关,但仍然错误

1 个答案:

答案 0 :(得分:0)

如果选项保留相同的值属性:

//get current option
var theOption = $select.val();

后来......

//select previously selected option if still in list
$select.val(theOption);

修改

您需要在填充代码中修复错误,因为这些选项中没有一个实际上具有值属性,这可能是您无法正确设置选择值的原因:

$.each(options, function(index, item) {
    $("<option>")
        .attr("value", item.display)
        .text(item.display)
        .appendTo($select);
});

请注意name不是选项元素的标准属性。