jQuery UI自动完成 - 菜单在悬停时消失

Chr*_*ris 61 html jquery jquery-ui jquery-ui-autocomplete

我正在尝试使用jQuery UI Autocomplete来显示MySQL数据库中的人员名单.基本功能正在运行 - 当您键入两个或更多字母时,会显示可能的名称列表 - 但是当我将鼠标悬停在列表上或按下向下键以访问列表时,它会消失(下面的2个屏幕截图可能有助于解释一下).

这意味着自动完成变得毫无意义,因为我实际上无法访问列表!如果有人可以提供帮助,我会非常感激!屏幕截图和代码发布在下面.

输入前几个字符,然后会出现菜单

截图1

但是,将鼠标悬停或按下"向下"键,它就会消失,然后才能进行选择

截图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>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$(document).ready(function(){

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

});
Run Code Online (Sandbox Code Playgroud)

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;

?>  
Run Code Online (Sandbox Code Playgroud)

bic*_*cle 199

该错误是由于两个 jQuery UI文件同时加载到客户端浏览器时发生的冲突引起的.如果你达到了你的<head>部分,你可能会看到你有两个不同的jQuery UI文件.只需删除一个即可.

  • @VictorRodrigues点击接受答案.它会给我一些简单的点:) (8认同)
  • 嗨,对于其他人在查找重复文件时遇到问题,问题也是由于库被引用两次引起的.如果您已经拥有jquery-ui-1.10.x.js,请删除各个库.因为jquery-ui.js已经包含了所有库(包括你的jquery.ui.autocomplete.js)http://stackoverflow.com/a/16344110/1027250 (2认同)
  • 你赢了互联网. (2认同)

reg*_*ike 5

我遇到了同样的问题,但我一次在 DOM 中只有一个 jquery-ui 脚本标签。我正在使用包含脚本标记的 Ajax 加载内容。如果我在一个页面上这样做两次,它会破坏自动完成下拉菜单,即使第二个请求的内容替换了第一个请求的内容。一种解决方法是在呈现包含 jquery-ui 脚本的内容之前添加此行:

$.ui = null;