Firefox忽略所选选项,始终显示下拉列表中的最后一项

时间:2012-12-18 20:28:19

标签: javascript jquery firefox

所以我编写了一些代码来对我所有网站的选择菜单进行排序,它在我们支持的每个浏览器中都能完美运行......除了Firefox。

http://jsfiddle.net/vkjAC/6/

我的代码接受select元素的选项,对它们进行排序并返回它们。在那里的某个地方,select元素上的selectedIndex会更改为最后一项。

我检查选择了哪些值/ defaultSelected:

for(k=0; k<options.length; k++)
{
    if(options[k].defaultSelected == true)
    {
        sel = k;
        break;
    }
}
if(sel === null)
{
    for(k=0; k<options.length; k++)
    {
        if(options[k].selected == true)
        {
            sel = k;
            break;
        }
    }
}
if(sel === null)
    { options[0].selected = true; }
else
    { options[sel].selected = true; }

但我不能从这个函数设置selectedIndex,因为我没有传入整个select对象,只是传递选项列表。

我尝试查找类似的问题,但我看到的每个其他线程都说这是一个缓存问题,或者我需要添加autocomplete =“off”,但那些不起作用。我假设它与我的代码有关,但我没有在任何地方修改selectedIndex属性。

有什么建议吗?我正在失去理智(而且时间不多了!)

1 个答案:

答案 0 :(得分:1)

我之前有过这个。它与删除选项然后再次添加的事实有关。您必须在排序后重新选择该值。例如:

var ops = $('#mass').find('option');
$('#mass').prepend(sortDropDown(ops)).val($("#mass > option[selected]").val());