• User Attivo

    jquery autocomplete e popolamento campo testo

    Buongiorno a tutti, sono poco esperto di jquery e js.
    Ho cercato ma non riesco a venire a capo di un problema.

    DB Mysql - tabella con 3 campi:
    | id_for | cod_for | des_for |

    1 - creo un file json per un campo form autocomplete. Funziona.
    2 - seleziono il nome desiderato dopo ricerca con minimo 2 caratteri. Funziona.
    3 - popolo due campi testo con cod_for (F00093) e des_for (ABELLI ANTONIO). Funziona.
    4 - nello stesso momento in un terzo campo testo compongo il nome file che andrà caricato, secondo lo schema:
    aaaa_mm_id(autoincrease)_fornitore(cod_for).pdf - (2015_10_00011_F00093.pdf)

    Nel campo autocomplete con onChange="componi()" richiamo la funzione per creare il nome file,

    QUI ERRORE: il nome composto risulta: 2015_10_00011_ab.pdf (dove ab sono le due lettere digitate per selezionare il nome fornitore sul campo autocomplete, suppongo che il tag onChange non va, provo onSelect, on keyUp... ma nulla!
    Non riesco a capire.. sono bloccato... Mi potete aiutare? Grazie in anticipo.

    [HTML]
    <script>
    jQuery(document).ready(function(){
    //"keyup" event handler to reset input fields && '#project-cod_for'
    $( "#project" ).live('keyup', function(e){
    //Improved with keycode checking to prevent extra typing after select
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
    var keyCode = $.ui.keyCode;
    if(key != keyCode.ENTER && key != keyCode.LEFT && key != keyCode.RIGHT && key != keyCode.DOWN) {
    $('#project-des_for').val("");
    }
    });

    $( "#project" ).combogrid({
        debug:true,
        colModel: [{'columnName':'name','label':'Fornitore'}],
        url: 'server.php',
        //"select item" event handler to set input fields
        select: function( event, ui ) {
            $( "#project" ).val( ui.item.name );
            $( "#project-des_for" ).val( ui.item.name );
            $( "#project-cod_for" ).val( ui.item.author );
            
            return false;
        }
    });
    

    });
    </script>
    <script type="text/javascript">
    function componi()
    {
    var myTesto=document.getElementById("name");
    var mycodice=document.getElementById("project");
    var valorecodice=mycodice.value;
    var myidp=document.getElementById("idp");
    var valoreidp=myidp.value;
    var today=new Date();
    year=today.getYear();

               if(year<1900)year=year+1900;
               if(valorecodice!=""&valoreidp!="")
                {
                //myTesto.value=year+"_"+(today.getMonth()+1)+"_"+valoreidp+"_"+valorecodice;
                myTesto.value=year+"_"+('0' + (today.getMonth() + 1)).slice(-2)+"_"+valoreidp+"_"+valorecodice;
                }           
            }
        </script>
    

    <form bla bla>
    <input size="16" type="text" name="cod_for" id="project-cod_for" class="stile1" readonly="readonly"/> (campo testo con codice fornitore F00093)
    <input size="50" name="des_for" id="project-des_for" class="stile1" readonly="readonly"/> (campo testo con descrizione fornitore ABELLI ANTONIO)
    <input type="text" name="data_fatt" size="10" id="data_fatt" />
    <input name="num_fatt" type="text" class="stile1" id="num3" onfocus="document.getElementById('num').style.backgroundColor='#fff'; this.value=' '; return false;" size="15" /> (campo testo numero progressivo id autoincrement)
    <input type="text" id="name" name="name" size="50" class="stile1" readonly="readonly" /> (campo testo nome file pdf composto 2015_10_00011_ab.pdf)
    <input type="submit" name="Submit" value="Inserisci" class="pulsante" />
    </form>
    [/HTML]

    Spero di essere stato esaustivo, grazie ancora


  • Moderatore

    Ciao linno,

    in pratica vorresti che il terzo campo di testo fosse popolato col nome del file, ed il tuo problema è che anzichè inserire il codice del fornitore ti inserisce le lettere ( non autocompletate ) del campo descrizione fornitore?


  • User Attivo

    Buongiorno!
    grazie, sì, il problema è questo. Passa il valore digitato (una, due o tre lettere) e non il valore (codice fornitore) legato al fornitore selezionato. allego un print.
    Spero di riuscire a capire insieme a voi....


  • User Attivo

    Buongiorno a tutti,
    nessun suggerimento?
    Grazie.


  • User Attivo

    Ho risolto, da quel che ho capito la chiamata alla funzione componi() la inserisco direttamente nel metodo select:

    select:function( event, ui ){
                $("#project").val( ui.item.name );
                $("#project-des_for").val( ui.item.name );
                $("#project-cod_for").val( ui.item.author );
    **               componi();**
                return false;
            }
    

    è sbagliata anche questa istruzione:

    var mycodice=document.getElementById("project"); 
    

    è invece:

    var mycodice=document.getElementById("project-cod_for");
    

    Grazie a tutti.