Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [jQuery] Ottimizzare controlli

    Buon giorno.
    Ho una funzione che gestisce l'invio dei dati ad una seconda pagina che esegue l'INSERT.
    Soltanto che vorrei ottimizzarla ma non so come fare.
    Tutte quelle if, per esempio non posso essere ottimizzate?
    codice:
    function subInUppIstr(tip,id_istr,id_dett){
                var morDal        = $("#morDal").val();
                var morAl        = $("#morAl").val();
                var salMor        = $("#salMor").val();
                var intDal        = $("#intDal").val();
                var intAl        = $("#intAl").val();
                var salInt        = $("#salInt").val();
                var impCre        = $("#impCre").val();
                var impDeb        = $("#impDeb").val();
                var impRim        = $("#impRim").val();
                var saldTot        = $("#saldTot").val();
                var morUtePrec    = $("#morUtePrec").val();
                var ImpCont        = $("#ImpCont").val();
                var numRat        = $("#numRat").val();
                if(morDal==undefined){
                    morDal = '';
                }
                if(morAl==undefined){
                    morAl = '';
                }
                if(salMor==undefined){
                    salMor = '';
                }
                if(intDal==undefined){
                    intDal = '';
                }
                if(intAl==undefined){
                    intAl = '';
                }
                if(salInt==undefined){
                    salInt = '';
                }
                if(impCre==undefined){
                    impCre = '';
                }
                if(impDeb==undefined){
                    impDeb = '';
                }
                if(impRim==undefined){
                    impRim = '';
                }
                if(saldTot==undefined){
                    saldTot = '';
                }
                if(morUtePrec==undefined){
                    morUtePrec = '';
                }
                if(ImpCont==undefined){
                    ImpCont = '';
                }
                if(numRat==undefined){
                    numRat = '';
                }
               
                          if(confirm("Aggiornare?")){/*ecc ecc*/}
    }
    Mi aiutate per favore?
    Ultima modifica di ANTAGONIA; 27-03-2015 a 10:13

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    Ciao, puoi fare diverse cose e in vari modi.

    Intanto puoi eliminare la ripetizione dell'istruzione var e usare la virgola.
    Poi una prima soluzione per eliminare tutti quegli if può essere l'uso dell'operatore || (OR logico) direttamente sull'assegnazione del valore (che in questo caso, se non sbaglio, viene chiamata "valutazione a corto circuito"):
    codice:
    var morDal =  $("#morDal").val()||"",
        morAl = $("#morAl").val()||"",
        salMor =  $("#salMor").val()||"",
        intDal = $("#intDal").val()||"",
        intAl =  $("#intAl").val()||"",
        salInt = $("#salInt").val()||"",
        impCre =  $("#impCre").val()||"",
        impDeb = $("#impDeb").val()||"",
        impRim =  $("#impRim").val()||"",
        saldTot = $("#saldTot").val()||"",
         morUtePrec = $("#morUtePrec").val()||"",
        ImpCont =  $("#ImpCont").val()||"",
        numRat =  $("#numRat").val()||"";
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    Io personalmente ottimizzerei anche tutte le assegnazioni usando un oggetto con le relative proprietà al posto delle variabili, ed un semplice ciclo per assegnare i rispettivi valori:
    codice:
    var  i,o = {},a = ["morDal", "morAl", "salMor", "intDal", "intAl", "salInt",  "impCre", "impDeb", "impRim", "saldTot", "morUtePrec", "ImpCont",  "numRat"];
    while (i = a.shift()){o[i] = $("#"+i).val() ||  ""}
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    Chiaramente nel caso precedente dovrai usare le proprietà dell'oggetto per ottenere i relativi valori.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    In alternativa, utilizzando un sistema analogo, puoi creare delle variabili al volo attraverso la funzione eval().
    Ad ogni modo l'uso di eval() è una prassi sconsigliata da molti.

    codice:
    var i,a = ["morDal", "morAl", "salMor", "intDal", "intAl",  "salInt", "impCre", "impDeb", "impRim", "saldTot", "morUtePrec", "ImpCont",  "numRat"];
    while (i = a.shift()){eval("var "+i+' = $("#"+i).val() ||  ""')}

    EDIT: Scusate il post frammentato, non mi faceva postare diversamente.. soliti problemi
    Ultima modifica di KillerWorm; 28-03-2015 a 05:04
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Io personalmente ottimizzerei anche tutte le assegnazioni usando un oggetto con le relative proprietà al posto delle variabili, ed un semplice ciclo per assegnare i rispettivi valori:
    codice:
    var  i,o = {},a = ["morDal", "morAl", "salMor", "intDal", "intAl", "salInt",  "impCre", "impDeb", "impRim", "saldTot", "morUtePrec", "ImpCont",  "numRat"];
    while (i = a.shift()){o[i] = $("#"+i).val() ||  ""}
    Buon giorno, ti ringrazio per la prima parte dell'ottimizzazione.
    Ma l'ottimizzazione per l'assegnazione dei valori, non l'ho capita.
    Grazie.

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    Ciao, cosa non hai capito esattamente?
    Cerco di spiegare. Inizializzo un oggetto vuoto e un array che contiene i "nomi". Questo array lo do in pasto al ciclo che crea dinamicamente le proprietà dell'oggetto e il selettore JQuery in base ai singoli valori dell'array. Quindi assegno, ad ogni proprietà, il valore restituito dal relativo selettore JQuery o una stringa vuota (se il selettore restituisce il valore "undefined").

    Posso quindi accedere alle proprietà dell'oggetto, utilizzando la notazione a punto, per ottenere i relativi valori.
    Ad esempio:
    codice:
    alert(o.morDal)
    E' chiaro che in questo caso si dovrà sempre fare riferimento all'oggetto per accedere alle varie proprietà.

    Giusto per conoscenza, esiste la funzione with() che permetterebbe di usare direttamente le proprietà dell'oggetto specificato senza fare riferimento all'oggetto stesso, ma questo metodo è sconsigliato/pericoloso/deprecato, quindi da non usare.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.