2

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

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

我的代码接受选择元素的选项,对它们进行排序并返回它们。在那里的某个地方,选择元素上的 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 因为我没有传入整个选择对象,只是选项列表。

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

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

4

1 回答 1

1

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

var ops = $('#mass').find('option');
$('#mass').prepend(sortDropDown(ops)).val($("#mass > option[selected]").val());
于 2012-12-18T20:40:33.533 回答