Ciao a tutti. ho una funzione che alla pressione di un tasto genera una riga con una serie di campi input.
2 di questi campi usano l'autocomplete di jquery.
il problema è che vorrei far si che la tendina del primo campo input(quando si cerca qualcosa) abbia piu informazioni per riga.
mi spiego meglio con un esempio:
[cia ] <-campo input
ciano ,22 anni, londra, vivo
ciamician ,84 anni, londra, morto
etcc...
normalmente se si scrive "cia" appare solo il campo nome (quindi ciano,ciamician etcc...)
ho dato uno sguardo a monkeypatch, ho provato a modificare la funzione _renderItem nel file ui.autocomplete.js.
Facendo cosi però ho modificato tutti i campi "autocomplete", che ovviamente non avendo gli stessi valori mi restituiscono una serie di "undefinied"
ho provato ad integrare tutto dentro la funzione.. ma o mi da errore.. oppure mi cancella fisicamente dal video il campo input (è una textarea)
posto il codice che magari per voi è piu semplice.
in rosso la parte aggiuntiva che mi fa cancellare il campo textarea.codice:.append($('<td align="left">') .append($("<textarea>") .attr({id:'JQdesc_'+num,cols:"70",name:"desc"+num}) .autocomplete({ source: "../../ajax_articolo.php", minLength: 3, select: function( event, ui ) { $("#JQcodice_"+nim).empty().append(ui.item.codice) $("#JQunimis_"+nim).val(ui.item.unimis) $("#JQhidCodice_"+nim).val(ui.item.codice) $("#JQidArt_"+nim).val(ui.item.id) $("#JQprezzo_"+nim).val(ui.item.prezzo_ven) $("#JQunita_"+nim).val("1") $("#JQprezzoUnita_"+nim).empty().append(ui.item.prezzo_ven) $("#JQsconto_"+nim).val("0") $("#JQprezzoSconto_"+nim).empty().append(ui.item.prezzo_ven) $("#JQid_iva_"+nim).val(ui.item.id_iva) $("#JQiva_"+nim).val(ui.item.iva) $("#JQtotale_"+nim).empty().append(function(){$(this).calc( "price+((price/100)*iva)", { price: $("input[id^=JQprezzo_]"), iva: $("input[id^=JQiva_]") }, function (s){ return s.toFixed(2); } ) }) recalc() } })._renderItem= function( ul, item) { return $( "[*]" ) .data( "item.autocomplete", item ) .append( "<a>" + item.label + " | giac:" + item.giacenza + " | Ven:" + item.prezzo_acq + "€ | Acq:" + item.prezzo_ven + "€</a>" ) //.append( $( "<a></a>" ).text( item.label ) ) .appendTo( ul ); } ) )
ho provato anche così, che è una funzione che ho trovato ripetuta molto spesso nei vari forum...ma probabilemtne sto sbagliando tutto.
riepilogando ho una pagina con diversi campi con autocomplete.codice:.data("autocomplete")._renderItem= function( ul, item) { return $( "[*]" ) .data( "item.autocomplete", item ) .append( "<a>" + item.label + " | giac:" + item.giacenza + " | Ven:" + item.prezzo_acq + "€ | Acq:" + item.prezzo_ven + "€</a>" ) //.append( $( "<a></a>" ).text( item.label ) ) .appendTo( ul ); }
vorrei che solo alcuni di questi campi (tutti generati dinamicamente da una funzione) avessere piu "campi" nella riga.
anziche "descrizione", avere qualcosa come "descrizione","luogo", "prezzo" etcc...
grazie a tutti per la pazienza,
scusate il disturbo e tanti auguri![]()

Rispondi quotando