Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Gestione decimali

  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Gestione decimali

    Ciao,

    come posso fare in modo che questo prodotto

    var qta = item.value;
    var total = qta * unitPrice;
    itemTotal.value = total;

    1) separi i decimali con la virgola e non col punto
    2) non vengano visualizzati risultati del tipo 54.0000001 ma che i valori siano arrotondati alla seconda cifra decimale?

    Grazie mille

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Una delle tante possibili soluzioni:
    codice:
    var total = "" + (Math.round(qta * unitPrice * 100) / 100); 
    total += (total.indexOf('\.')<0)?'.00':'0';
    total = total.substr(0,total.indexOf('\.')+3).replace("\.",",");
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Grazie per l'aiuto e per la veloce risposta!!!!

  4. #4
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Non capisco una cosa...

    se in un campo ho 9,7 e quantita 1

    il prodotto è 9,60

    per quale motivo??

    Grazie

  5. #5
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Comai questo problema?

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Sono le sole variabili in gioco? perche non riesco a ottenere un risultato sbagliato

    Posta tutto lo script che usi.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    function updateTotal(item, unitPrice)
    {
    var qta = item.value;

    var total = "" + (Math.round(qta * unitPrice * 100) / 100);
    total += (total.indexOf('\.')<0)?'.00':'0';
    total = total.substr(0,total.indexOf('\.')+3).replace("\." ,",");

    //Questa è la parte fissa che conosci nel tuo item passato alla funzione
    var strQt = 'Qt';

    //Questa è la parte fissa che sai avere il tuo elemento totale
    var strTot = 'Totale';

    //Posizione in cui inizia la parola Qta
    var iPos = item.id.lastIndexOf(strQt);

    //Recupero della parte variabile del nome
    var strVar = item.id.substr(0, iPos)

    //Composizione del nome dell'elemento totale da aggiornare
    var strCurTotElem = strVar + strTot;

    //Referenziazione all'elemento totale
    var itemTotal = document.getElementById(strCurTotElem);

    if(itemTotal != null)
    itemTotal.value = total;
    }
    </script>





    HTML

    <TD class="testo7" bgcolor="#FEF2D6">

    <input name="repCategorie:_ctl0:repArticoli:_ctl0:Px" type="text" value="9,7" maxlength="8" id="repCategorie__ctl0_repArticoli__ctl0_Px" disabled="disabled" class="TestoDataGridRight" style="width:30px;" />
    </TD>
    <TD class="testo7" bgcolor="#FEF2D6">
    <input name="repCategorie:_ctl0:repArticoli:_ctl0:Qt" type="text" value="0" maxlength="8" id="repCategorie__ctl0_repArticoli__ctl0_Qt" class="TestoDataGridRight" onblur="javascript:updateTotal(this,9.6);" onkeyup="v=this.value; this.value=v.replace(/\D/gi,'') " style="width:30px;" />
    </TD>
    <TD class="testo7" bgcolor="#FEF2D6">
    <input name="repCategorie:_ctl0:repArticoli:_ctl0:Totale" type="text" value="0" maxlength="8" id="repCategorie__ctl0_repArticoli__ctl0_Totale" class="TestoDataGridRight" style="width:60px;" />
    </TD>


    Grazie per l'aiuto

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Lo script fa il suo dovere... tu lo richiami passandogli proprio quel valore :rollo:

    onblur="javascript:updateTotal(this,9.6);"

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    ma quel valore è il prodotto di qt * prezzo

    ed il prodotto non risulta corretto nel caso in cui ci siano decimali.

    come mostrato nel mio primo post

    grazie

  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da valeria75
    ma quel valore è il prodotto di qt * prezzo

    ed il prodotto non risulta corretto nel caso in cui ci siano decimali.

    come mostrato nel mio primo post

    grazie
    Quel valore e' fisso... c'e' scritto nella chiamata.

    Qui di seguito le modifiche (in rosso) per potyer far funzionare lo script... almeno fino all'alert che ho aggiunto: per la parte di visualizzazione devi provarci da solo... ma per uno che usa dei nomi di campi cosi' marziani: "repCategorie:_ctl0:repArticoli:_ctl0:Px" VVoVe: sara' un gioco da ragazzi

    codice:
    <script>
    function updateTotal(item, unitPrice) 
    { 
    var qta = item.value; 
    
    var total = "" + (Math.round(qta * unitPrice * 100) / 100); 
    total += (total.indexOf('\.')<0)?'.00':'0'; 
    total = total.substr(0,total.indexOf('\.')+3).replace("\.",","); 
    alert(total) 
    //Questa è la parte fissa che conosci nel tuo item passato alla funzione 
    var strQt = 'Qt'; 
    
    //Questa è la parte fissa che sai avere il tuo elemento totale 
    var strTot = 'Totale'; 
    
    //Posizione in cui inizia la parola Qta 
    var iPos = item.id.lastIndexOf(strQt); 
    
    //Recupero della parte variabile del nome 
    var strVar = item.id.substr(0, iPos) 
    
    //Composizione del nome dell'elemento totale da aggiornare 
    var strCurTotElem = strVar + strTot; 
    
    //Referenziazione all'elemento totale 
    var itemTotal = document.getElementById(strCurTotElem); 
    
    if(itemTotal != null) 
    itemTotal.value = total; 
    } 
    </script> 
    
    </head><body><form> 
    
    <TD class="testo7" bgcolor="#FEF2D6"> 
    
    <input name="repCategorie:_ctl0:repArticoli:_ctl0:Px" type="text" value="9.7" maxlength="8" 
    id="repCategorie__ctl0_repArticoli__ctl0_Px" disabled="disabled" class="TestoDataGridRight" style="width:30px;" /> 
    </TD> 
    <TD class="testo7" bgcolor="#FEF2D6"> 
    <input name="repCategorie:_ctl0:repArticoli:_ctl0:Qt" type="text" value="0" maxlength="8" 
    id="repCategorie__ctl0_repArticoli__ctl0_Qt" class="TestoDataGridRight" 
    onblur="updateTotal(this, this.form.elements[ 'repCategorie:_ctl0:repArticoli:_ctl0:Px' ].value);" onkeyup="v=this.value; this.value=v.replace(/\D/gi,'')" style="width:30px;" /> 
    </TD> 
    <TD class="testo7" bgcolor="#FEF2D6"> 
    <input name=" repCategorie:_ctl0:repArticoli:_ctl0:Tot
    ale" type="text" value="0" maxlength="8" id=" repCategorie__ctl0_repArticoli__ctl0_Tot
    ale" class="TestoDataGridRight" style="width:60px;" /> 
    </TD> 
    </form> 
    </BODY>
    Occhio che il form introduce qualche spazio... :rollo:

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca 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.