Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    comparazione stringhe.non va :dhò:

    Ciao a tutti.
    sto cercando di fare una cosa che dovrebbe esser banale..ma non mi riesce.

    tramite jquery faccio una chiamata ad un file php per recuperare dei dati.

    con quello recupero una stringa di questo tipo:

    codice:
    [ { "id_cat":"", "id_art":"", "perc":""} , { "id_cat":"", "id_art":"", "perc":""}, ....]
    nella pagina invece ho una serie di righe con degli input.
    le righe sono composte da una serie di input e sono create dinamicamente quindi non hanno un ID fisso.

    codice:
    <input type="text" id="cat_1" ><input type="text" id="art_1" ><input type="text" id="perc_1" >
    <input type="text" id="cat_2" ><input type="text" id="art_2" ><input type="text" id="perc_2" >
    <input type="text" id="cat_3" ><input type="text" id="art_3" ><input type="text" id="perc_3" >
    .......
    quello che dovrei fare è:
    1) se ("cat_X" ="id_cat") allora perc_X=perc
    2) se ("art_X" ="id_art") allora perc_X=perc
    3) se non si sono verificate le condizioni precedenti perc_X prende un valore standard.

    ora veniamo allo script che ho (fatto bene o male che sia )
    codice:
    $.each(valore, function(chiave2, valore2) 
    {
          if(chiave2=="base_percent")
          {
             $("#provv").val(valore2);
          }
           else
          {
    	if(chiave2=='id_cat')
    	{	
                      cod_catmer=valore2;  //valore numerico
    	}
    	if(chiave2=='id_art')
    	{									      cod_articolo=valore2; //valore alfanumerico
    	}
    	if(chiave2=='perc')
    	{									     percentuale=valore2;  //valore numerico
    	}
            }
    });
    
    for (i=1;i<=$("#MaxIdArticolo").val();i++ )
    {
          var categoria=$("#cat_"+i).val();  //valori numerici
           var codiceart=$("#art_"+i).val();  //valori alfanumerici
    
          $("#stat_"+i).val($("#provv").val());
           
          if(cod_catmer==categoria)
          {									
    	$("#stat_"+i).val(percentuale);
          }
    
      //IL PROBLEMA é QUI
         if(cod_articolo==codiceart)
         {									
               $("#stat_"+i).val(percentuale);
         }
    }
    il problema è nel confronto tra le due stringhe alfanumeriche cod_articolo==codiceart

    provando a fare un
    codice:
    alert("cod_articolo: "+cod_articolo+"==codiceart: "+codiceart);
    il risultato è :
    cod_articolo: GENPROD2==codiceart: FOD685

    funziona tutto, la percentuale viene assegnata correttamente quando rieseguo la funzione sbaglia l'assegnazione di una percentuale.


    EDIT: a quanto pare l'errore era nel punto sbagliato. per sia la parte "cod_catmer==categoria"

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    qualche consiglio?

    credo a questo punto di star sbagliando l'approccio.

    ho un array multidimensionale
    array(
    array(chiave1:valore1,chaive2:valore2,chiave3:valo re3),
    array(chiave1:valore1,chaive2:valore2,chiave3:valo re3),
    etcc..
    )

    eseguo un ciclo $.each per avere gli array interni.
    array(chiave1:valore1,chaive2:valore2,chiave3:valo re3)

    estrapolo esplodo l'array in tre variabili

    ciclo le righe confrontando i valori che ho con le varaibili dell'array.

    ma quando faccio il confronto
    codice:
    //inizio $.each per recuperare gli array interni
    
         //inizio ciclo $each(2) per trasformare le chiavi dell'array e i valori in variabili 
         //fine ciclo $.each(2)
    
         //inizio ciclo for
    
         $("#provv_"+i).val(5); //assegna a provv_x il valore 5
    
        //  se la categoria corrisponte a quella dell'array allora assegna a provv_x il val      percentuale 
         if(categoria==cod_catmer&&cod_articolo=='')
        {
               $("#provv_"+i).val(percentuale);
         }
    
          //  se il codice articolo corrisponte a quella dell'array allora assegna a provv_x il val      percentuale 
         if(cod_articolo==codiceart)
         {									
            $("#provv_"+i).val(percentuale);
          }
         //fine ciclo for
    
    //fine ciclo $.each
    quello che non capisco è questo.
    in teoria dovrebbe procedre per ordine.
    1)prima assegna al campo il valore 5
    2) verifica se c'è ugualianza quindi assegna il valore della variabile percentaule
    3) verifica se c'è ugualianza quindi assegna il valore della variabile percentaule

    se elimino la prima riga $("#provv_"+i).val(5);
    si comporta correttamente.
    se invece la alscio tutti i valori prendono il valore 5....

    come se $("#provv_"+i).val(5); fosse eseguita per ultima.

    un consiglio?

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    prova ad aggiornare una variabile e solo alla fine ad assegnare questo valore come val()

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    ho provato a fare

    codice:
    ciclo FOR
    {
       variabile=1;
    
       each()
       {
            if( condizione1)
            {
                setta percerntuale.val()
                variabile=2
            }
    
            if( condizione1)
            {
                 setta percerntuale.val()
                variabile=2
            }
            
            if(variabile==1)
            {
                alert("valore in riga "+X+" non impostato: variabile ="+variabile);
             }
         }
    }
    ma per ogni riga mi diceva " valore in riga X non impostato: variabile =2 "

    quindi ho modificato tutto.. e ho risolto così

    ciclo for(),

    eseguo l'each() per avere i dati e impostare il valore percentuale.
    chiudo l'each()

    faccio un controllo. se la il campo _x.val() è vuoto setto la percentuale astandard.
    chiudo il for()

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.