Ich habe vollständig Jquery Autocomplete-Code abgesehen von, wenn die Optionen angezeigt werden, können sie nicht ausgewählt werden. Ich habe versucht, eine ähnliche Instanz zu finden, damit ich keine Fragen dupliziere, aber alle anderen Fragen scheinen sich auf die Maus zu beziehen, die nicht funktioniert, aber Schlüssel sind ect.Jquery Autocomplete Ergebnis kann nicht mit der Maus oder Tasten
Das Problem, das ich habe, ist, dass ich über eine Option schweben kann, die alle korrekt ist, ändert die Option hovered CSS wie es sollte (Unterstreichungen) aber wenn ich klicke oder drücke Enter, verschwindet der Hover/Fokus CSS, die Liste ist immer noch angezeigt und es ist kein Text in das Eingabefeld. es ist als ob nichts jemals gedrückt wurde. Ich bin mir nicht sicher, ob es an meinen jQuery-Links liegt (alle anderen Jquery auf der Seite funktionieren perfekt). Ich kämpfe wirklich mit diesem, also würde jede Hilfe wirklich geschätzt werden. Vielen Dank.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<?php
// query to find usernames for the search bar
$userSearch = $pdo->prepare("SELECT username FROM members");
$userSearch->execute([]);
$userSearchResult = [];
while ($row = $userSearch->fetch(PDO::FETCH_ASSOC)) {
$userSearchResult[] = [
'value' => $row['username'],
'category' => "username"
];
}
// query to find teams for the search bar
$teamSearch = $pdo->prepare("SELECT teamName FROM teams");
$teamSearch->execute([]);
$teamSearchResult = [];
while ($row = $teamSearch->fetch(PDO::FETCH_ASSOC)) {
$teamSearchResult[] = [
'value' => $row['teamName'],
'category' => "teams"
];
}
$result = array_merge(
$userSearchResult,
$teamSearchResult
);
?>
<script type="text/javascript">
//Assign php generated json to JavaScript variable
var searches = <?php echo json_encode($result)?>
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function(ul, items) {
var self = this,
currentCategory = "";
$.each(items, function(index, item) {
if (item.category != currentCategory) {
ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
currentCategory = item.category;
}
self._renderItem(ul, item);
});
}
});
$(function() {
$("#searchBox").catcomplete({
source: searches
});
});
</script>
Ich habe eine Reihe von Dingen versucht, mit der select:
Funktion zu tun:
select: function(event, ui) {
var origEvent = event;
while (origEvent.originalEvent !== undefined)
origEvent = origEvent.originalEvent;
if (origEvent.type == 'keydown')
$("#searchBox").click();
},
...
oder
select: function(event, ui) {
$("#searchBox").val(ui.item.value);
return false;
},
aber keiner von ihnen scheint einen Unterschied zu machen.
Ich weiß, dass die Auswahlfunktion einen Standardzustand hat, mit dem ich ziemlich glücklich bin, wie das funktionieren sollte, also glaube ich nicht, dass es damit zu tun hat, aber ich könnte falsch liegen.