ich brauchte diese vor kurzem zu tun, und nach ein paar verschiedenen Permutationen versucht (mit onfocus, Onclick von Textbox etc), habe ich endlich auf diesem angesiedelt ...
<input id="autocomplete" name="autocomplete" type="text"
value="Choose Document">
<p>
<button type="submit" value="Submit" name="submit" id="submit" >
Submit
</button>
</p>
<script type="text/javascript">
$("#autocomplete").autocomplete(
{
source: '@Url.Content("~/Document/DocumentTypeAutoComplete/")' //<--ddl source
, minLength: 0 // <-- This is necessary to get the search going on blank input
, delay: 0
, select: function (event, ui)
{
if (ui.item) {
$("#autocomplete").val(ui.item.value);//<-- Place selection in the textbox
$("docForm").submit();
loadDocTypeCreatePartial(ui.item);
$("#submit").focus(); //This stops the drop down list from reopening
// after an item in the select box is chosen
// You can place the focus anywhere you'd like,
// I just chose my *submit* button
}
}
}).focus(function() {
// following line will autoselect textbox text
// making it easier for the user to overwrite whats in the
// textbox
$(this).select();
//The below line triggers the search function on an empty string
$(this).data("autocomplete").search('');
});
</script>
Dies eröffnet die Autocomplete-ddl-Liste im Fokus (Auch wenn Sie Standard-Text in Ihrem Eingabefeld haben wie ich oben).
Der Text im Textfeld wird automatisch ausgewählt, damit der Benutzer den Text nicht löschen muss.
Sobald ein Element aus der Liste zur automatischen Vervollständigung ausgewählt wurde, wird dieses Element in das Eingabefeld zum automatischen Vervollständigen verschoben und der Fokus wird auf ein anderes Steuerelement verschoben (wodurch verhindert wird, dass die automatische Vervollständigung wieder geöffnet wird).
Ich plane, es durch Hinzufügen von dynamischen Ajax-Anrufe zu den sehr schönen Chosen Auswahllisten mit dem Melting Ice Upgrade zu ersetzen, wenn ich eine Chance bekomme.
Siehe Tom Pietrosantis Antwort für den Weg, dies zu tun, ohne einen Auslöser oder eine Taste zu verwenden. – njfife
Siehe auch Craigs Antwort unten. –