jQuery UI API - Autocomplete Widget
Kategorien
Nutzung
Beschreibung:Die Autocomplete-Funktion sucht und filtert basierend auf der Benutzereingabe und ermöglicht es Benutzern, schnell aus einer vordefinierten Liste von Werten zu finden und auszuwählen.
添加版本:1.8
Jedes Feld, das Eingaben empfangen kann, kann in ein Autocomplete umgewandelt werden, d. h.,<input>input-Elemente,<textarea>textarea-Elemente undcontenteditableElemente mit einem contenteditable-Attribut.
Wenn das Autocomplete-Feld fokussiert wird oder Zeichen darin eingegeben werden, beginnt das Plugin mit der Suche nach passenden Einträgen und zeigt eine Liste von Werten zur Auswahl an. Durch die Eingabe weiterer Zeichen kann der Benutzer die Liste filtern, um bessere Übereinstimmungen zu erhalten.
Dieses Widget kann verwendet werden, um zuvor ausgewählte Werte auszuwählen, z. B. zum Eingeben von Artikel-Tags oder zum Eingeben von E-Mail-Adressen aus einem Adressbuch. Autocomplete kann auch verwendet werden, um zugehörige Informationen auszufüllen, z. B. durch Eingabe eines Stadtnamens, um die Postleitzahl dieser Stadt zu erhalten.
Sie können Daten aus einer lokalen Quelle oder einer entfernten Quelle abrufen: Eine lokale Quelle eignet sich für kleine Datensätze, z. B. ein Adressbuch mit 50 Einträgen; eine entfernte Quelle eignet sich für große Datensätze, z. B. eine Datenbank mit Hunderten oder Tausenden von Einträgen. Weitere Informationen zu benutzerdefinierten Datenquellen finden Sie insourceder Dokumentation für die Option.
Tastaturinteraktion
Wenn das Menü geöffnet ist, sind die folgenden Tastaturbefehle verfügbar:
- UP – Fokus zum vorherigen Element verschieben. Wenn Sie sich auf dem ersten Element befinden, den Fokus zum Eingabefeld verschieben. Wenn Sie sich im Eingabefeld befinden, den Fokus zum letzten Element verschieben.
- DOWN – Fokus zum nächsten Element verschieben. Wenn Sie sich auf dem letzten Element befinden, den Fokus zum Eingabefeld verschieben. Wenn Sie sich im Eingabefeld befinden, den Fokus zum ersten Element verschieben.
- ESCAPE – Menü schließen.
- ENTER – Das aktuell fokussierte Element auswählen und das Menü schließen.
- TAB – Das aktuell fokussierte Element auswählen, das Menü schließen und den Fokus zum nächsten fokussierbaren Element verschieben.
- PAGE UP/DOWN – Eine Bildschirmseite voller Elemente scrollen (basierend auf der Höhe des Menüs).
Wenn das Menü geschlossen ist, sind die folgenden Tastaturbefehle verfügbar:
- OBEN/UNTEN - Wenn erfüllt,
minLengthdann das Menü öffnen.
主题
Das Autocomplete-Widget verwendetdas jQuery UI CSS Framework, um die Styles für sein Erscheinungsbild und Verhalten festzulegen. Wenn Sie Styles verwenden müssen, die spezifisch für das Autocomplete-Widget sind, können Sie die folgenden CSS-Klassennamen verwenden:
ui-autocomplete: Wird verwendet, um das passendeMenü anzuzeigen.ui-autocomplete-input: Das vom Autocomplete-Widget instanziierte Eingabeelement.
Abhängigkeiten
Zusätzliche Hinweise
- Dieses Widget benötigt etwas funktionales CSS, andernfalls funktioniert es nicht. Wenn Sie ein benutzerdefiniertes Theme erstellen, verwenden Sie die widgetspezifische CSS-Datei als Ausgangspunkt.
- Dieses Widget arbeitet programmgesteuert mit dem Wert des Elements, sodass es beim Ändern des Elementwerts nicht das native auslöst
changeEreignis.
Schnellnavigation
| Optionen | Methoden | Erweiterungspunkte | Ereignisse |
|---|---|---|---|
| Optionen | Type | Beschreibung | Standardwert |
|---|---|---|---|
| appendTo | Selektor | Das Element, an das das Menü angehängt werden soll. Wenn dieser Wertnull, sucht das übergeordnete Element des Eingabefelds nachui-frontclass. Wenn ein Element mitui-frontclass gefunden wird, wird das Menü an dieses Element angehängt. Wenn kein Element mitui-frontclass gefunden wird, wird das Menü unabhängig vom Wert an den body angehängt.Hinweis: Wenn das Vorschlagsmenü geöffnet ist, Codebeispiele: Initialisiert ein Autocomplete mit der angegebenen
$( ".selector" ).autocomplete({ appendTo: "#someElem" });
Nach der Initialisierung abrufen oder festlegen // getter var appendTo = $( ".selector" ).autocomplete( "option", "appendTo" ); // setter $( ".selector" ).autocomplete( "option", "appendTo", "#someElem" ); |
null |
| autoFocus | Boolean | Wenn festgelegt auftrue, wenn das Menü angezeigt wird, erhält das erste Element automatisch den Fokus.Codebeispiele: Initialisiert ein Autocomplete mit der angegebenen
$( ".selector" ).autocomplete({ autoFocus: true });
Nach der Initialisierung abrufen oder festlegen // getter var autoFocus = $( ".selector" ).autocomplete( "option", "autoFocus" ); // setter $( ".selector" ).autocomplete( "option", "autoFocus", true ); |
false |
| delay | Integer | Die Verzögerung zwischen einem Tastendruck und der Ausführung der Suche, in Millisekunden. Bei lokalen Daten ist eine Verzögerung von null sinnvoll (reaktionsschneller), bei Remote-Daten erzeugt sie jedoch eine hohe Last und verringert die Reaktionsfähigkeit. Codebeispiele: Initialisiert ein Autocomplete mit der angegebenen
$( ".selector" ).autocomplete({ delay: 500 });
Nach der Initialisierung abrufen oder festlegen // getter var delay = $( ".selector" ).autocomplete( "option", "delay" ); // setter $( ".selector" ).autocomplete( "option", "delay", 500 ); |
300 |
| disabled | Boolean | Wenn festgelegt auftrue, die Autovervollständigung ist deaktiviert.Codebeispiele: Initialisiert ein Autocomplete mit der angegebenen
$( ".selector" ).autocomplete({ disabled: true });
Nach der Initialisierung abrufen oder festlegen // getter var disabled = $( ".selector" ).autocomplete( "option", "disabled" ); // setter $( ".selector" ).autocomplete( "option", "disabled", true ); |
false |
| minLength | Integer | Die Mindestanzahl an Zeichen, die der Benutzer eingeben muss, bevor eine Suche ausgeführt wird. Bei lokalen Daten mit nur wenigen Einträgen wird sie üblicherweise auf null gesetzt, aber wenn eine Suche mit einem einzelnen Zeichen Tausende von Einträgen finden würde, ist es erforderlich, einen hohen Wert festzulegen. Codebeispiele: Initialisiert ein Autocomplete mit der angegebenen
$( ".selector" ).autocomplete({ minLength: 0 });
Nach der Initialisierung abrufen oder festlegen // getter var minLength = $( ".selector" ).autocomplete( "option", "minLength" ); // setter $( ".selector" ).autocomplete( "option", "minLength", 0 ); |
1 |
| position | Objekt | Gibt die Position des Vorschlagsmenüs relativ zum zugeordneten Eingabeelement an.ofDie Option verwendet standardmäßig das Eingabeelement, aber Sie können ein anderes Positionierungselement angeben. Weitere Details zu den verschiedenen Optionen finden Sie unterjQuery UI Position。Codebeispiele: Initialisiert ein Autocomplete mit der angegebenen
$( ".selector" ).autocomplete({ position: { my : "right top", at: "right bottom" } });
Nach der Initialisierung abrufen oder festlegen
// getter
var position = $( ".selector" ).autocomplete( "option", "position" );
// setter
$( ".selector" ).autocomplete( "option", "position", { my : "right top", at: "right bottom" } );
|
{ my: "left top", at: "left bottom", collision: "none" } |
| source | Array oder String oder Function( Object request, Function response( Object data ) ) | Definiert die zu verwendenden Daten und muss angegeben werden. Unabhängig von der verwendeten Variable wird die Beschriftung immer als Text behandelt. Wenn die Beschriftung als HTML behandelt werden soll, können SieScott González' HTML-Erweiterung verwenden. Die Demo konzentriert sich auf Mehrere Typen werden unterstützt:
Codebeispiel: Initialisieren Sie das Autocomplete mit den angegebenen
$( ".selector" ).autocomplete({ source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ] });
Nach der Initialisierung abrufen oder festlegen // getter var source = $( ".selector" ).autocomplete( "option", "source" ); // setter $( ".selector" ).autocomplete( "option", "source", [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ] ); |
keine; muss angegeben werden |
| Methoden | Gibt zurück | Beschreibung |
|---|---|---|
| close() | jQuery (nur Plugin) | Schließt das Autocomplete-Menü. Wenn sie mit dersearchMethode verwendet wird, kann sie verwendet werden, um ein geöffnetes Menü zu schließen.
Codebeispiel: Rufen Sie die close-Methode auf: $( ".selector" ).autocomplete( "close" ); |
| destroy() | jQuery (nur Plugin) | Entfernt die Autocomplete-Funktionalität vollständig. Dadurch wird das Element in seinen Zustand vor der Initialisierung zurückversetzt.
Codebeispiel: Rufen Sie die destroy-Methode auf: $( ".selector" ).autocomplete( "destroy" ); |
| disable() | jQuery (nur Plugin) | Deaktiviert das Autocomplete.
Codebeispiel: Rufen Sie die disable-Methode auf: $( ".selector" ).autocomplete( "disable" ); |
| enable() | jQuery (nur Plugin) | Aktiviert das Autocomplete.
Codebeispiel: Rufen Sie die enable-Methode auf: $( ".selector" ).autocomplete( "enable" ); |
| option( optionName ) | Objekt | Ruft den Wert ab, der derzeit dem angegebenen zugeordnet istoptionNameOption.
Codebeispiel: Methode aufrufen: var isDisabled = $( ".selector" ).autocomplete( "option", "disabled" ); |
| option() | PlainObject | Ruft ein Objekt ab, das Schlüssel/Wert-Paare enthält, die den aktuellen Autocomplete-Options-Hash repräsentieren.
Codebeispiel: Methode aufrufen: var options = $( ".selector" ).autocomplete( "option" ); |
| option( optionName, value ) | jQuery (nur Plugin) | Legt den Wert der Autocomplete-Option fest, die dem angegebenen zugeordnet istoptionNameOption.
Codebeispiel: Methode aufrufen: $( ".selector" ).autocomplete( "option", "disabled", true ); |
| option( options ) | jQuery (nur Plugin) | Legt eine oder mehrere Optionen für das Autocomplete fest.
Codebeispiel: Methode aufrufen:
$( ".selector" ).autocomplete( "option", { disabled: true } );
|
| search( [value ] ) | jQuery (nur Plugin) | Löst dassearchsearch-Ereignis, und wenn das Ereignis nicht abgebrochen wird, ruft es die Datenquelle auf. Wenn darauf geklickt wird, kann es von einer selectbox-ähnlichen Schaltfläche verwendet werden, um die Vorschläge zu öffnen. Wenn es ohne Argumente aufgerufen wird, wird der aktuelle Eingabewert verwendet. Kann mit einer leeren Zeichenfolge aufgerufen werden undminLength: 0um alle Elemente anzuzeigen.
Codebeispiel: Die search-Methode aufrufen: $( ".selector" ).autocomplete( "search", "" ); |
| widget() | jQuery | Gibt einjQueryObjekt, das das Menüelement enthält.
Codebeispiel: Die widget-Methode aufrufen: $( ".selector" ).autocomplete( "widget" ); |
| Erweiterungspunkte | Gibt zurück | Beschreibung |
|---|---|---|
| Das Autocomplete-Widget wird über dieWidget Factoryerstellt und kann erweitert werden. Beim Erweitern des Widgets können Sie Verhaltensweisen für das Erweiterungs-Widget überschreiben oder hinzufügen. Die unten bereitgestellten Methoden dienen als Erweiterungspunkte und haben dieselbe API-Stabilität wie diePlugin-Methoden, die oben aufgelistet sind. Weitere Informationen zu Widget-Erweiterungen finden Sie unterErweitern von Widgets mit der Widget Factory. | ||
| _renderItem( ul, item ) | jQuery | Methode, die die Erstellung jeder Option im Menü des Widgets steuert. Die Methode muss ein neues <li> Element erstellen, es an das Menü anhängen und es zurückgeben.Hinweis: Derzeit muss das
Codebeispiel: Fügen Sie den Wert des Eintrags als
_renderItem: function( ul, item ) {
return $( "<li>" )
.attr( "data-value", item.value )
.append( $( "<a>" ).text( item.label ) )
.appendTo( ul );
}
|
| _renderMenu( ul, items ) | jQuery (nur Plugin) | Diese Methode ist dafür verantwortlich, die Menügröße anzupassen, bevor das Menü angezeigt wird. Das Menüelement kann abgerufen werden durchthis.menu.elementVerwendung von.
Codebeispiel: Fügt den alten Menüelementen einen CSS-Klassennamen hinzu.
_renderMenu: function( ul, items ) {
var that = this;
$.each( items, function( index, item ) {
that._renderItemData( ul, item );
});
$( ul ).find( "li:odd" ).addClass( "odd" );
}
|
| _resizeMenu() | jQuery (nur Plugin) | Diese Methode ist dafür verantwortlich, die Menügröße anzupassen, bevor das Menü angezeigt wird. Das Menüelement kann abgerufen werden durchthis.menu.elementVerwendung von.
Codebeispiel: Das Menü wird immer 500 Pixel breit angezeigt.
_resizeMenu: function() {
this.menu.element.outerWidth( 500 );
}
|
| Ereignisse | Type | Beschreibung |
|---|---|---|
| change( event, ui ) | autocompletechange | Wird ausgelöst, wenn sich der Wert des Eingabefelds ändert.
Codebeispiel: Initialisiert die Autocomplete mit dem angegebenen Change-Callback:
$( ".selector" ).autocomplete({
change: function( event, ui ) {}
});
Binden Sie einen Event-Listener an das autocompletechange-Ereignis:
$( ".selector" ).on( "autocompletechange", function( event, ui ) {} );
|
| close( event, ui ) | autocompleteclose | Wird ausgelöst, wenn das Menü ausgeblendet wird. Nicht jedescloseEreignis wird von einemchangeEreignis.
Hinweis: Codebeispiel: Initialisieren Sie das Autocomplete mit dem angegebenen Close-Callback:
$( ".selector" ).autocomplete({
close: function( event, ui ) {}
});
Binden Sie einen Event-Listener an das autocompleteclose-Ereignis:
$( ".selector" ).on( "autocompleteclose", function( event, ui ) {} );
|
| create( event, ui ) | autocompletecreate | Wird ausgelöst, wenn das Autocomplete erstellt wird.
Hinweis: Codebeispiel: Initialisieren Sie das Autocomplete mit dem angegebenen Create-Callback:
$( ".selector" ).autocomplete({
create: function( event, ui ) {}
});
Binden Sie einen Event-Listener an das autocompletecreate-Ereignis:
$( ".selector" ).on( "autocompletecreate", function( event, ui ) {} );
|
| focus( event, ui ) | autocompletefocus | Wird ausgelöst, wenn der Fokus auf einen Eintrag (nicht ausgewählt) wechselt. Die Standardaktion besteht darin, den Wert im Textfeld durch den Wert des fokussierten Eintrags zu ersetzen, selbst wenn das Ereignis durch Tastaturinteraktion ausgelöst wird. Das Abbrechen dieses Ereignisses verhindert, dass der Wert aktualisiert wird, aber nicht, dass der Menüeintrag den Fokus erhält.
Codebeispiel: Initialisieren Sie das Autocomplete mit dem angegebenen focus-Callback:
$( ".selector" ).autocomplete({
focus: function( event, ui ) {}
});
Binden Sie einen Event-Listener an das autocompletefocus-Ereignis:
$( ".selector" ).on( "autocompletefocus", function( event, ui ) {} );
|
| open( event, ui ) | autocompleteopen | Wird ausgelöst, wenn das Vorschlagsmenü geöffnet oder aktualisiert wird.
Hinweis: Codebeispiel: Initialisieren Sie das Autocomplete mit dem angegebenen open-Callback:
$( ".selector" ).autocomplete({
open: function( event, ui ) {}
});
Binden Sie einen Event-Listener an das autocompleteopen-Ereignis:
$( ".selector" ).on( "autocompleteopen", function( event, ui ) {} );
|
| response( event, ui ) | autocompleteresponse | Wird ausgelöst, nachdem eine Suche abgeschlossen ist und bevor das Menü angezeigt wird. Nützlich für die lokale Manipulation von Vorschlagsdaten, wenn ein benutzerdefiniertersourceOptions-Callback nicht erforderlich ist. Dieses Ereignis wird immer ausgelöst, wenn die Suche abgeschlossen ist, und es wird auch dann ausgelöst, wenn das Menü nicht angezeigt wird, weil die Suche keine Ergebnisse zurückgegeben hat oder Autocomplete deaktiviert ist.
Codebeispiele: Autocomplete mit dem angegebenen Response-Callback initialisieren:
$( ".selector" ).autocomplete({
response: function( event, ui ) {}
});
Einen Ereignis-Listener an das autocompleteresponse-Ereignis binden:
$( ".selector" ).on( "autocompleteresponse", function( event, ui ) {} );
|
| search( event, ui ) | autocompletesearch | Erfüllt, bevor die Suche ausgeführt wirdminLengthunddelayund dann ausgelöst. Wenn dieses Ereignis abgebrochen wird, wird keine Anfrage gesendet und es werden keine Vorschlagseinträge bereitgestellt.
Hinweis: Codebeispiele: Autocomplete mit dem angegebenen Search-Callback initialisieren:
$( ".selector" ).autocomplete({
search: function( event, ui ) {}
});
Binden Sie einen Event-Listener an das autocompletesearch-Ereignis:
$( ".selector" ).on( "autocompletesearch", function( event, ui ) {} );
|
| select( event, ui ) | autocompleteselect | Wird ausgelöst, wenn ein Element aus dem Menü ausgewählt wird. Die Standardaktion besteht darin, den Wert im Textfeld durch den Wert des ausgewählten Elements zu ersetzen. Das Abbrechen dieses Ereignisses verhindert, dass der Wert aktualisiert wird, aber es verhindert nicht, dass das Menü geschlossen wird.
Codebeispiele: Initialisieren Sie autocomplete mit dem angegebenen select-Callback:
$( ".selector" ).autocomplete({
select: function( event, ui ) {}
});
Binden Sie einen Event-Listener an das autocompleteselect-Ereignis:
$( ".selector" ).on( "autocompleteselect", function( event, ui ) {} );
|
Beispiele
Beispiel 1:Ein einfaches jQuery-UI-Autocomplete.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>自动完成部件(Autocomplete Widget)演示</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<label for="autocomplete">选择一个编程语言:</label>
<input id="autocomplete">
<script>
$( "#autocomplete" ).autocomplete({
source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]
});
</script>
</body>
</html>
Beispiel 2:
Verwenden Sie einen benutzerdefinierten source-Callback, um den Anfang des Begriffs abzugleichen.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>自动完成部件(Autocomplete Widget)演示</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<label for="autocomplete">选择一个编程语言:</label>
<input id="autocomplete">
<script>
var tags = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ];
$( "#autocomplete" ).autocomplete({
source: function( request, response ) {
var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
response( $.grep( tags, function( item ){
return matcher.test( item );
}) );
}
});
</script>
</body>
</html>
Weitere Erweiterungen