sto usando jQuery-ui-completamento automatico (in realtà, un catcomplete collegato a una casella di ricerca). Funziona bene finché utilizzo una matrice di elementi definita staticamente come sorgente.jQuery UI completamento automatico utilizzando un file JSON statica come fonte
Per motivi di prestazioni, non desidero che il completamento automatico invii richieste Ajax a uno script PHP rendendo% come% richieste a MySQL. Quindi, ho generato un file JSON dal DB, contenente tutti gli elementi che possono essere confrontati nella ricerca (circa 20-30 elementi, da molte tabelle sql). Vorrei leggere /analizzare il file solo una volta, mentre la pagina viene caricata o quando l'utente inizia a digitare nella casella di ricerca.
Sono bloccato qui. Ho provato ad allegare una chiamata Ajax al .catcomplete() (codice seguente). Ho anche provato a fare una chiamata getJSON e creare il .catcomplete nel suo metodo success(). Entrambe le strade falliscono silenziosamente.
Sono un po 'nuovo per JS/jQuery, mi piace già, ma sono un po' perso. Qualsiasi aiuto/soluzione/puntatore a un documento utile sarebbe molto apprezzato.
Grazie mille!
Ecco il codice HTML: (Real Simple)
<form id="searchform" method="get" role="search">
<input id="searchfield" />
<input type="submit" name="go" value="go!" />
</form>
Ecco il mio codice JS:
$("#searchfield").catcomplete({
delay: 0,
source: function(request, response) {
$.ajax({
url: "/path/to/cache.json",
dataType: "json",
data: {term: request.term},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.label,
category: item.category,
desc: item.desc
};
}));
}
});
},
minlength:0
});
dati di esempio JSON:
[
{ label: "lbl1", category: "cat1", desc: "desc1"},
{ label: "lbl2", category: "cat1", desc: "desc2"},
{ label: "lbl3", category: "cat1"}
]
In realtà, sono riuscito a saltare la parte regexp utilizzando un monkeypatch su _renderItemData (che sembrano coinvolgere solo gli elementi corrispondenti). Ho contrassegnato la tua risposta come la migliore, poiché il mio vero problema erano le virgolette nel file JSON. Grazie mille per averlo indicato! –