jQuery UI自动完成 – 菜单消失hover

我正在尝试使用jQuery UI Autocomplete调出MySQL数据库中的人员名单。 基本function正在工作 – 当您键入两个或多个字母时,会显示一个可能的名称列表 – 但是当我将鼠标hover在列表上或按下向下键访问列表时,它将消失(下面的两个截图可能有助于解释这一点)。

这意味着Autocomplete变得毫无意义,因为我实际上无法访问列表! 如果有人能够帮助,我会最感激! 截图和代码张贴如下。

input前几个字符,然后出现菜单

截图1

但hover鼠标或按下“下”键,它会消失之前,可以进行select

截图2

HTML:

<div id="chooseaccount"> Choose Account to Edit <div id="iechooseaccountlabel" class="labeldiv"> <!--[if IE]> Enter Student Name <![endif]--> </div> <input type="text" class="inputs" id="editname" placeholder="Enter Student Name" /> </div> 

jQuery的:

 $(document).ready(function(){ $("#editname").autocomplete({ source: "names.php", minLength: 2, }); }); 

PHP:

 <?php $mysqli = new mysqli('********', '********', '**********', '*********'); $text = $mysqli->real_escape_string($_GET['term']); $query = "SELECT name FROM users WHERE name LIKE '%$text%' ORDER BY name ASC"; $result = $mysqli->query($query); $json = '['; $first = true; while($row = $result->fetch_assoc()) { if (!$first) { $json .= ','; } else { $first = false; } $json .= '{"value":"'.$row['name'].'"}'; } $json .= ']'; echo $json; ?> 

该错误是由于两个 jQuery UI文件同时加载到客户端的浏览器时发生冲突而导致的。 如果你进入你的<head>部分,你可能会看到你有两个不同的jQuery UI文件。 只要删除一个,它会工作。

我有同样的问题,但我只有一次在DOM中有一个jquery-ui脚本标记。 我正在使用包含脚本标记的Ajax加载内容。 如果我在一页上做了两次,即使第二个请求的内容replace了第一个请求的内容,也会中断自动完成下拉菜单。 一种解决方法是在渲染包含jquery-ui脚本的内容之前添加这一行:

$.ui = null;

这个错误是在两个jQuery UI文件同时加载到浏览器中时引起的。这可能会导致jQuery的冲突。 删除未使用的jQuery UI文件来解决错误。

在我的情况下,jquery-ui.min.js文件被无意中包含在assets文件夹中。要删除它,我在config / main.php中的组件中添加了一个代码

  'clientScript' => array( 'scriptMap' => array( 'jquery-ui.min.js' => false, )), 

在你的头文件中加载的jquery文件包含了所有的UI元素,并且自动添加到你的文件中,具有不需要上传的子元素,所以你应该删除它。

我有同样的问题,我没有两次使用jQuery UI,我的jQuery UI是jQuery DataTable的一部分。
我的问题已经解决了下面的代码
注意:使用这个代码,当我们不点击UL时,我们需要编写代码来closuresUL

 $(".gettingContactList").autocomplete({ source:this.contactList, /*following focus function was written because when mouse was being hovered over the menu, the menu was disappearing*/ focus:function(e,ui) { $(e.toElement).parents().show() } })