我在网络表单上有一个选择下拉列表,它是根据在表单上的输入字段中选择的选项填充的。
表单使用AJAX / JSON从服务器返回选项列表,它将用于填充选择。
我的Javascript代码中有一个循环,循环遍历JSON响应对象以填充选择。
响应对象将具有键/值对(两个字符串值)形式的数据:
“” - 请选择,45 - 光学,52 - 牙科,67 - 手术,83 - 骨科等。
填充我正在使用的选择的代码是:
$.each(response, function(key,value) {
$("#benefitField4").append("<option value="+key+">"+value+"</option>");
}
...其中'benefitField4'是表单上select的id。
我需要在按键顺序中显示的选择中的结果,因此使用“请选择”键值为“”,我希望这将是第一个。
现在,在所有浏览器中,生成的选择按正确的顺序显示下拉列表,“请选择”作为第一个选项。
然而,在IE8中,'Please select'在列表中排名第3,其中'Optical'是第一个。
我尝试使用以下代码对select进行排序:
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);
但是这会导致select中的最后一项(在本例中为Osteopath)作为select中的初始值,其中'Please select'是最后一项。再次,仅在IE8中。
由于我需要在所有浏览器中使用它,我有点迷失为什么IE8会以这种方式运行。
有人可以帮忙吗?
答案 0 :(得分:0)
我发现这迫使IE8选择“请选择&#39;作为默认选择选项:
$('#benefitField4 option[value="0"]').attr("selected",true);
出于某种原因,它忽略了&#39; eq(0)&#39;。奇怪。
一切都很好。感谢那些评论过的人。