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

    formato valuta in un numero

    salve a tutti,
    utilizzo uno script come il seguente per calcolare il rapporto tra due valori digitati nei corrispondenti campi di testo, e metterla in un campo di destinazione in corrispondenza dell'evento onblur...

    codice:
    <script type="text/javascript">
    function divisione(ff) {
      var A = parseFloat(ff.CAMPO1.value);
      var B = parseFloat(ff.CAMPO2.value);
      ff.CAMPODEST.value = A/B;
    }
    </script>

    Ebbene, mi piacerebbe che il risultato avesse il formato della valuta in euro: xx.xxx.xxx,dd

    Per esempio, se A fosse 10000 e B fosse 3 , il risultato sarebbe 3333.333333333 ...
    A me occorrerebbe che fosse 3.333,33 :master:

    Il punto di separazione delle migliaia è un di più al quale potrei al limite rinunciare , ma il troncamento alla seconda cifra decimale e la sostituzione del punto con la virgola come separatore della parte intera da quella decimale mi servono assolutamente

    Aiutooo...


    AleX

  2. #2
    ciao AleX, la sintassi non sarà elegantissima ma sembra funzionare:

    codice:
    <script type="text/javascript">
    
    function formatIt(s) {
    var oldfirst="";
    var second="";
    var newfirst="";
    var y=0;
    var result="";
    if (s.indexOf('.')>-1) {
     oldfirst=s.substring(0, s.indexOf('.'));
     second=s.substr(s.indexOf('.')+1, 2);
     for (var i=oldfirst.length-1; i>=0; i--) {
      if (y%3==0 && y>0) newfirst='.'+newfirst;
      newfirst=oldfirst[i]+newfirst;
      y++;
     }
    result=newfirst+','+second;
    }
    else {
     for (var i=s.length-1; i>=0; i--) {
      if (y%3==0 && y>0) newfirst='.'+newfirst;
      newfirst=s[i]+newfirst;
      y++;
     }
    result=newfirst;
    }
    return result;
    }
    
    function divisione(ff) {
      var A = parseFloat(ff.CAMPO1.value);
      var B = parseFloat(ff.CAMPO2.value);
      ff.CAMPODEST.value = formatIt((A/B).toString());
    }
    </script>
    fammi sapere. :)

  3. #3
    Ciao grande var,
    purtroppo il tuo script sembra non funzionare perfettamente , restituisce il valore undefined,xx dove xx corrisponde effettivamente alla parte decimale troncata ai centesimi (ottimo), ma la parte intera compare appunto indefinita...

    che dici?

  4. #4
    è strano, se provi questa pagina:

    codice:
    <!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
    
    <html>
    <head>
         <title>prova</title>
    
    <script language="JavaScript">
    
    function f(s) {
    var oldfirst="";
    var second="";
    var newfirst="";
    var y=0;
    var result="";
    if (s.indexOf('.')>-1) {
     oldfirst=s.substring(0, s.indexOf('.'));
     second=s.substr(s.indexOf('.')+1, 2);
     for (var i=oldfirst.length-1; i>=0; i--) {
      if (y%3==0 && y>0) newfirst='.'+newfirst;
      newfirst=oldfirst[i]+newfirst;
      y++;
     }
    result=newfirst+','+second;
    }
    else {
     for (var i=s.length-1; i>=0; i--) {
      if (y%3==0 && y>0) newfirst='.'+newfirst;
      newfirst=s[i]+newfirst;
      y++;
     }
    result=newfirst;
    }
    alert(result);
    }
    
    </script>
    
    </head>
    
    <body onload="f('48934737.3437');">
    
    </body>
    </html>
    vedrai che funziona bene.
    magari prova a cambiare ff.CAMPODEST.value = formatIt((A/B).toString()); in

    ff.CAMPODEST.value = formatIt(A/B);

    oppure

    ff.CAMPODEST.value = formatIt(new String((A/B)));

    fammi sapere.

  5. #5
    purtroppo non mi funziona nemmeno la pagina che mi hai costruito,
    all'avvio compare una finestra di pop-up con scritto:
    undefinedundefined.undefinedundefinedundefined.und efinedundefinedundefined,34

    non funzionano (ovviamente) neanche i tentativi di modifica da te suggeriti...

    Non so se abbia rilevanza il fatto che uso internet explorer come browser...

    che mi dici?

  6. #6
    ok, beccato l'errore.
    sostituisci

    newfirst=oldfirst[i]+newfirst;

    con

    newfirst=oldfirst.charAt(i)+newfirst;

    e

    newfirst=s[i]+newfirst;

    con

    newfirst=s.charAt(i)+newfirst;

    con Firefox funzionava anche la prima versione, però.
    fammi sapere.

  7. #7
    Mitticooo!!!!

    Funzionaaa!!!!

    Sei veramente un grande! Ricordati, quando tu mai dovessi passare per Roma, di farti offrire una cena da me


    Grazie mille, alla prossima

    AleX

  8. #8

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 © 2025 vBulletin Solutions, Inc. All rights reserved.