Dieser Code verwendet HTML5 -Datalist -Tag, um automatische Optionen für ein Textfeld einzustellen
. Es greift die Daten aus einer JSON -Datei mit einer AJAC -Anforderung (Daten, die im Browser bei Bedarf oder lokal in einem JS -Objekt im Browser gespeichert werden können). Anschließend wird die Auswahl eines Vororts verwendet, um andere Felder Postleitzahl und festzustellen, wenn sich der Vorort ändert. Funktioniert wie ein Genuss in so ziemlich allen Browser außer Safari.
Hinweise: Der HTML -Datalist ist immer noch nicht mit allen Browsern kompatibel. Siehe Kompatibilität. Für das Backfill -Plugin verwenden Sie dies: jQuery.relevantDropdowns.js - Es fügt ein UL -Tag mit Li für Optionen für die Ersetzung der Datalistenoptionen ein.
html5 datalist tag
Voller jQuery
Dieser Code füllt den Datalisten über JSON und füllt automatisch andere Felder basierend auf der automatischen Auswahl des Feldes durch den Benutzer.
<span>window.DATALIST = {
</span>
<span>cache: {},
</span>
<span>init: function()
</span> <span>{
</span> <span>var _this = this,
</span> <span>this.cache.$form = $('formid');
</span> <span>this.cache.$suburbs = this.cache.$form.find('datalist#suburbs');
</span> <span>this.cache.$suburbInput = this.cache.$form.find('input[name="suburb"]');
</span> <span>this.cache.$postcodeInput = this.cache.$form.find('input[name="postcode"]');
</span> <span>this.cache.$stateInput = this.cache.$form.find('input[name="state"]');
</span>
<span>//grab the datalist options from JSON data
</span> <span>var checkMembershipRequest = $.ajax({
</span> <span>type: "GET",
</span> <span>dataType: "JSON",
</span> <span>url: "/php/suburbs.php"
</span> <span>});
</span>
checkMembershipRequest<span>.done(function(data)
</span> <span>{
</span> <span>console.log(data);
</span>
<span>//data could be cached in the browser if required for speed.
</span> <span>// localStorage.postcodeData = JSON.stringify(data);
</span>
<span>//add options to datalist
</span> $<span>.each(data.suburbs, function(i<span>,v</span>)
</span> <span>{
</span> _this<span>.cache.$suburbs.append(''+i+'');
</span> <span>});
</span>
<span>//hook up data handler when suburb is changed to autocomplete postcode and state
</span> _this<span>.cache.$suburbInput.on('change', function()
</span> <span>{
</span> <span>// console.log('suburb changed');
</span> <span>var val = $(this).val(),
</span> selected <span>= _this.cache.$suburbs.find('option[data-value="'+val+'"]'),
</span> postcode <span>= selected.data('postcode'),
</span> state <span>= selected.data('state');
</span> _this<span>.cache.$postcodeInput.val(postcode);
</span> _this<span>.cache.$stateInput.val(state);
</span> <span>});
</span>
<span>});
</span>
checkMembershipRequest<span>.fail(function(jqXHR<span>, textStatus</span>)
</span> <span>{
</span> <span>console.log( "postcode request fail - an error occurred: (" + textStatus + ")." );
</span> <span>//try again...
</span> <span>});
</span>
<span>}
</span>
<span>}</span>
Full html
So könnte Ihr HTML aussehen:
*Suburb:
*Postcode:
State:
Voller JSON
Die PHP -Datei gibt JSON zurück - kann bei Bedarf .json oder .Php und greifen Sie Daten aus einer Datenbank.
Verwenden Sie Alt Down Arrow, um die Benutzeraktion zu simulieren. Sie müssen JQuery verwenden, um einen mehrfachen Trigger -Schlüsselpress zu simulieren.
KeyCode Alt = 18 (auch Modifikator -Schlüssel, der als Altkey bezeichnet wird)
KeyCode Down Arrow = 40
häufig gestellte Fragen (FAQs) zu JQuery Ajax und HTML5 Datalist AutoComplete
Wie kann ich Datalistenoptionen dynamisch mit AJAX in Firefox laden? Zunächst müssen Sie eine AJAX-Anforderung an Ihr serverseitiges Skript erstellen. Dieses Skript sollte die Daten zurückgeben, die Sie im Datalisten bevölkern möchten. Sobald die AJAX -Anforderung erfolgreich ist, können Sie die Antwortdaten verwenden, um den Datalisten zu füllen. Hier ist ein einfaches Beispiel:
Das obige ist der detaillierte Inhalt vonJQuery Ajax HTML5 Datalist Autoperete Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn