jquery autocomplete 在IE11中出现打开网页输入框有默认值时下拉列表是已经打开的状态解决

页面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.Code
22                             }
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下已正常。

 

posted @ 2019-08-26 11:01  LoneRanger_WDY  阅读(746)  评论(0编辑  收藏  举报