我有2个这样的下拉列表:
<select id="first">
<option>M1</option>
<option>M2</option>
</select>
<select id="second">
<option></option>
</select>
第一个固定了数据,我在第二个中加载了数据,像这样:
$("#first").change(function () {
load2ndListData($("#first").val());
});
通常,如果用户从第一个列表中选择项目,然后单击第二个。第二列表有足够的时间根据第一列表的选定项目加载其数据。但是问题是,如果我在选择第一个列表中的项目之后使用了选项卡箭头按钮。
屏幕截图
在完成加载数据之前,它立即聚焦于第二个下拉列表。
我做了一些研究,发现这些箭头按钮只能通过focus()处理。因此,我在另外两个当前列表之间添加了1个不透明度= 0的列表:
<select id="first">
<option>M1</option>
<option>M2</option>
</select>
<select id="middle" style="opacity:0;">
<option></option>
</select>
<select id="second">
<option></option>
</select>
JS:
$("#middle").focus(function () {
document.getElementById("first").focus();
$.when($.ajax(load2ndListData())).then(function () {
document.getElementById("second").focus();
});
});
运行良好,但是第二个列表的数据加载速度非常慢,因为load2ndListData()被调用了两次。一种来自change()事件,另一种来自focus()事件。有人可以在这里给我一些建议吗?我尝试使用节流阀,但是没有运气,并且我无法放弃change()事件,因为该站点还可以在没有这些按钮的其他平台(如Android)上运行!非常感谢你。