所以我编写了一些代码来对我所有网站的选择菜单进行排序,它在我们支持的每个浏览器中都能完美运行......除了Firefox。
我的代码接受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属性。
有什么建议吗?我正在失去理智(而且时间不多了!)
答案 0 :(得分:1)
我之前有过这个。它与删除选项然后再次添加的事实有关。您必须在排序后重新选择该值。例如:
var ops = $('#mass').find('option');
$('#mass').prepend(sortDropDown(ops)).val($("#mass > option[selected]").val());