Kod ini menggunakan tag Datalist HTML5 untuk menyediakan pilihan autocomplete untuk medan teks
. Ia merebut data dari fail JSON dengan permintaan AJAC (data yang boleh disimpan dalam penyemak imbas secara berterusan jika perlu atau secara tempatan pada objek JS). Ia kemudian menggunakan pemilihan pinggir bandar untuk autopopulate bidang postkod lain dan nyatakan apabila pinggir bandar berubah. Bekerja seperti merawat dalam semua pelayar kecuali Safari.
Nota: Datalist HTML masih tidak sesuai dengan semua pelayar. Lihat keserasian. Untuk plugin backfill menggunakan yang satu ini: jQuery.relevantdropdowns.js - ia memasukkan tag UL dengan li untuk pilihan dalam menggantikan pilihan datalist.
<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>
*Suburb: *Postcode: State:
<span>{ </span> <span>"suburbs": { </span> <span>"suburb1": { </span> <span>"postcode": "2016", </span> <span>"state": "NSW" </span> <span>}, </span> <span>"suburb2": { </span> <span>"postcode": "4016", </span> <span>"state": "QLD" </span> <span>}, </span> <span>"suburb3": { </span> <span>"postcode": "3016", </span> <span>"state": "CA" </span> <span>}, </span> <span>"suburb4": { </span> <span>"postcode": "8016", </span> <span>"state": "WA" </span> <span>}, </span> <span>"suburb5": { </span> <span>"postcode": "6016", </span> <span>"state": "SA" </span> <span>} </span> <span>} </span><span>}</span>
<span>var e = jQuery.<span>Event</span>("keydown"); </span>e<span>.which = 40; </span>e<span>.altKey = true; </span><span>$("input").trigger(e);</span>
url: 'Server-side-script',
kejayaan: fungsi (data) {
datalist.empty ();
$ .eech (data, fungsi (indeks, nilai) {
datalist.Append ('
Atas ialah kandungan terperinci JQuery Ajax Html5 DataList Autocomplete Contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!