Я'пытаюсь использовать jQuery UI Autocomplete для вывода списка имен людей в базе данных MySQL. Основная функция работает - при вводе двух или более букв появляется список возможных имен, но когда я навожу курсор мыши на список или нажимаю клавишу вниз для доступа к списку, он исчезает (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, которое включало тег скрипта. Если я делал это дважды на одной странице, это приводило к поломке автозаполнения, даже если содержимое второго запроса заменяло содержимое первого. Один из вариантов решения проблемы - добавить эту строку перед рендерингом содержимого, содержащего скрипт jquery-ui:
$.ui = null;
.
Эта ошибка возникает при одновременной загрузке в браузер двух файлов jQuery UI, что может привести к конфликту jquery. Удалите неиспользуемый файл jquery UI, чтобы устранить ошибку.
В моем случае файл jquery-ui.min.js был непреднамеренно включен в папку assets. Чтобы удалить его, я добавил один код в components в config/main.php
'clientScript' => array(
'scriptMap' => array(
'jquery-ui.min.js' => false,
)),
Файл с jQuery, который будет загружен в ваш заголовок содержит все элементы интерфейса, и один, который автоматически добавляется в ваш файл, есть дети, элемент, который не требуется для загрузки, так что вы должны удалить его.
У меня была такая же проблема и я не использовать дважды пользовательского интерфейса jQuery, мой пользовательского интерфейса jQuery входила в jQuery объекты DataTable.<БР/>моя проблема была решена с помощью следующего кода<БР/>Примечание: этот код нужно написать код, чтобы закрыть ул, когда мы не нажимаем на ул<БР/>
в
$(".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()
}
})
в
У меня были похожие проблемы с машинописный
Я использовал фокус() и проблема была решена.
Пример:
$(ele).typeahead({source: $scope.varMap['abc'], items: undefined});
$(ele).focus();