页面input标签使用jq插件实现自动完成功能的时候发现,在IE11浏览器环境下页面input标签有绑定的默认值时,autocomplete 下拉框是直接显示出来的。
网上说的设置autocomplete 为false,貌似不能解决问题。。。。
经过排查发现,在谷歌浏览器环境下给输入框绑定默认值不会出现该情况,猜测应该是IE是input输入框值有变化时就会直接出发自动完成功能,尝试在js代码中添加
判断当前input是否已经获取焦点,只有获取了焦点才执行请求。
1 $(function () { 2 //自动完成 3 $("#Diag").autocomplete({ 4 source: function (request, response) { 5 $("#Diag")[0].title = ""; 6 //IE11下input填充完数据就会触发,过滤掉没获取焦点的触发 8 var focusid = document.activeElement.id; 9 if (focusid != 'Diag') {10 return;11 }12 $.ajax({13 type: "POST",14 url: "/DataMap/GetHos_Diagnosis",15 dataType: "json",16 data: { queryStr: request.term, HospFlag: $("#setHospFlag option:selected").val() },17 success: function (data) {18 this.title = "";19 response($.map(data, function (item) {20 return {21 value: item.Name, id: item.Code22 }23 }));24 if (data.length > 0) {25 autoFlag = true;26 } else {27 autoFlag = false;28 }29 30 },31 error: function (xhr) {32 if (xhr.status === 401) {33 window.location.href = xhr.statusText;34 return;35 }36 }37 });38 },39 select: function (event, ui) {40 setDiagnosis(ui.item.id, ui.item.value);41 //event.preventDefault();//取消选择填充42 //$('#QueryKeywords').val('');//清空输入框43 },44 minLength: 2,45 autoFocus: true,46 close: function (event, ui) { //菜单关闭事件47 autoFlag = false;48 }49 }50 );51 }); 测试发现,ie11下已正常。