繁体   English   中英

在IE8中选择下拉排序顺序

[英]Select drop down sort order in IE8

我在Web表单上有一个select下拉列表,该下拉列表是根据在此表单上输入字段之前选择的选项填充的。

该表单使用AJAX / JSON从服务器获取选项列表,它将用于填充选择内容。

我的Javascript代码中存在一个循环,该循环遍历JSON响应对象以便填充选择。

响应对象将具有键/值对(两个字符串值)形式的数据,如下所示:

“”-请选择,45-光学,52-牙科,67-外科手术,83-整骨术等。

填充我正在使用的选择的代码是:

$.each(response, function(key,value) {
    $("#benefitField4").append("<option value="+key+">"+value+"</option>");
}

...其中'benefitField4'是表单上选择的ID。

我需要按键顺序显示select的结果,因此对于“请选择”,键值为“”,我希望这将是第一个。

现在,在所有浏览器中,结果选择将以正确的顺序显示下拉列表,其中“请选择”是第一个选项。

但是,在IE8中,“请选择”在列表中排在第三位,“光学”排在第一位。

我尝试使用以下代码对选择进行排序:

var selectList = $('#benefitField4 option');
selectList.sort(function(a,b){
a = a.value;
b = b.value;
return a-b;
});
$('#benefitField4').empty()
$('#benefitField4').eq(0).html(selectList);

但这导致选择中的最后一项(在本例中为Osteopath)显示为选择中的初始值,“请选择”为最后一项。 同样,仅在IE8中。

因为我需要在所有浏览器中都可以使用它,所以我对IE8为何采用这种方式有点困惑。

有人可以帮忙吗?

我发现这迫使IE8选择“请选择”作为默认选择选项:

$('#benefitField4 option[value="0"]').attr("selected",true);

由于某种原因,它忽略了“ eq(0)”。 奇怪。

一切都很好。 感谢那些发表评论的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM