大脑现在不能正常工作。有人帮我填补空白。
需要选择当前选定的值,重新填充选项,然后选择上一个选项(如果它仍在列表中)。
为了方便起见,新值和之前选择的值将具有相同的名称属性,假设它在更新后仍在列表中,并且名称对于选项列表始终是唯一的。
//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);
});
编辑:我的代码出错,与问题无关,但仍然错误
答案 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
不是选项元素的标准属性。