Visualizzazione risultati 1 fino 5 di 5

Discussione: formattare valuta in campo input text... al volo

  1. #1
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito formattare valuta in campo input text... al volo

    Ciao

    Ho un campo imput text dove devono essere inserti dei numeri.
    Vorrei che automaticamente venissero convertiti in valuta euro.
    Mi spiego. L'utente digita ad esempio 1250.25 e tali numeri venissero convertiti in una cosa del genere:

    1.250,25 (in euro diciamo).

    Non so se è possibile ottenere la cosa al volo cioè mentre si sta digitando, ma almeno è possibile ottenerlo ,premendo ad esempio il tasto TAB per passare al campo imput successivo o qualcosa del genere?
    Mi servirebbe anche attribuire un colore.
    Grazie

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Possibile sarebbe anche possibile, usando opportunamente i gestori onkeyup o onkeydown, ma avresti un altro problema: come fai a distinguere, mentre stai digitando il numero, il punto che separa le migliaia da quello che separa i decimali?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Possibile sarebbe anche possibile, usando opportunamente i gestori onkeyup o onkeydown, ma avresti un altro problema: come fai a distinguere, mentre stai digitando il numero, il punto che separa le migliaia da quello che separa i decimali?

    Stammi bene...

    L'ho scritto sopra!

    L'utente digita 1250.25

    e il codice lo trasforma in 1.250,25 (milleduecentocinquanta euro e 25 cent).
    Mi spieghi come usare questi i gestori onkeyup o onkeydown, per piacere?

    Grazie

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Allora non dovresti usare onkeyup/onkeydown (che reagiscono quando viene premuto o rilasciato un tasto), ma ti servirebbe onchange, che interviene solo quando l'utente ha finito di scrivere il suo valore.

    Codice HTML:
    <script type="text/javascript">
    function reformat (element)
    {
       var number = element.value;
       number = number.replace ('.', ',');
       intpart = number.substring (0, number.indexOf (','));
       res = number.substring (number.indexOf (','));
       while (int.length () > 3)
       {
          res = '.' + intpart.substring (intpart.length () - 3) + res;
          intpart = intpart.substring (intpart.length () - 3);
       }
       res = intpart + res;
       element.value = res;
    }
    </script>
    [...]
    <input type="text" name="..." value="..." onchange="reformat(this)" />
    Dovrebbe funzionare... almeno fino a che il tuo utente deciderà di inserire i dati sempre con lo stesso formato.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Allora non dovresti usare onkeyup/onkeydown (che reagiscono quando viene premuto o rilasciato un tasto), ma ti servirebbe onchange, che interviene solo quando l'utente ha finito di scrivere il suo valore.

    Codice HTML:
    <script type="text/javascript">
    function reformat (element)
    {
       var number = element.value;
       number = number.replace ('.', ',');
       intpart = number.substring (0, number.indexOf (','));
       res = number.substring (number.indexOf (','));
       while (int.length () > 3)
       {
          res = '.' + intpart.substring (intpart.length () - 3) + res;
          intpart = intpart.substring (intpart.length () - 3);
       }
       res = intpart + res;
       element.value = res;
    }
    </script>
    [...]
    <input type="text" name="..." value="..." onchange="reformat(this)" />
    Dovrebbe funzionare... almeno fino a che il tuo utente deciderà di inserire i dati sempre con lo stesso formato.

    Stammi bene...
    Allora dementialsite.

    Ho fatto una fusione tra la tua funzione e una che ho trovato in giro ed è venuta fuori una cosa del genere:

    Codice:
    function numberFormat(nStr){
    	 nStr = nStr.replace(".",",");
      nStr += '';
      x = nStr.split('.');
      x1 = x[0];
      x2 = x.length > 1 ? '.' + x[1] : '';
      var rgx = /(\d+)(\d{3})/;
      while (rgx.test(x1))
        x1 = x1.replace(rgx, '$1' + '.' + '$2');
      return x1 + x2;
    }
    in questo modo per un utente che digita ad esempio 1250.25

    sarà visualizzato 1.250,25.

    Ok. Ci siamo quasi.
    L'ultima cosa che mi servirebbe e troncare le cifre che vengono inseriti dopo i 2 decimali.
    Adesso se si digita 1250.256
    viene fuori: 1.250,256

    vorrei far visualizzare (magari arrotondare secondo la regola dell'euro..ma questa è una cosa in più) SOLO 1.250,25.

    Cosa dovrei aggiungere alla funzione di cui sopra?

    Grazie ancora.
    Ultima modifica di gianlucaweb : 16-12-2010 alle ore 17.01.41

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •