Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Formattazione importi

  1. #1

    Formattazione importi

    Salve a tutti,
    dovrei formattare degli importi inseriti in un'area di testo mentre vengono digitati (onkeyup) tipo 1.000.000,00
    Mi servirebbe uno script che fa questo ma sono un neofita di javascript...
    Ne avevo già una per le date ma non riesco ad adattarla per gli importi.
    Grazie

  2. #2
    nelle textarea è parecchio complicato (perché, mi sembra di capire che c'è anche dell'altro testo...) non è che puoi far introdurre le cifre in un input text?

  3. #3
    andrebbe benissimo in un input type text.
    grazie dell'attenzione

  4. #4
    allora ci ho lavorato un po', anche perché la cosa mi interessava...

    Ho creato un paio di funzioni
    Codice PHP:
    function textFormatter(input){
        var 
    value input.value;
        
        var 
    comma value.indexOf(',');
        
        if (
    comma >= 0) {
            var 
    str1str2
            str2 
    value.substring(comma 1value.length);
            if (
    comma == 0) {
                
    str1 "0";
            }
            else {
                
    str1 value.substring(0comma);
            }
            
            if (
    str2.length 2) {
                var 
    last parseInt(str2.substring(23));
                if (
    last 5
                    
    str2 "" + (parseInt(str2.substring(02)) + 1);
                else 
                    
    str2 "" + (parseInt(str2.substring(02)));
            }
            else 
                if (
    str2.length 2) {
                    for (
    0str2.lengthi++) {
                        
    str2 += "0";
                    }
                }
            var 
    str1.replace(/\./g'');
            
    input.value insertPoints(v) + "," str2;
            
        }
        else {
            var 
    value.replace(/\./g'');
            
    input.value insertPoints(v) + ",00";
        }
        
    }

    function 
    insertPoints(value){
        var 
    len value.length;
        var 
    counter 0;
        for (
    len 1>= 0i--) {
            
    counter++;
            
            if (
    counter == && != 0) {
                var 
    s1 value.substring(0i);
                var 
    s2 value.substring(ivalue.length);
                
    value s1 "." s2;
                
                
    counter 0;
            }
        }
        return 
    value;

    poi ti è sufficiente ussare questa sintassi (che è DOM0 e quindi si può migliorare, ma funziona comunque)

    Codice PHP:
    <input type="text" onblur="textFormatter(this)"/> 
    L'ho messo sull'evento onBlur ovvero quando l'input perde il focus.

  5. #5
    Originariamente inviato da artorius
    allora ci ho lavorato un po', anche perché la cosa mi interessava...

    Ho creato un paio di funzioni
    Codice PHP:
    function textFormatter(input){
        var 
    value input.value;
        
        var 
    comma value.indexOf(',');
        
        if (
    comma >= 0) {
            var 
    str1str2
            str2 
    value.substring(comma 1value.length);
            if (
    comma == 0) {
                
    str1 "0";
            }
            else {
                
    str1 value.substring(0comma);
            }
            
            if (
    str2.length 2) {
                var 
    last parseInt(str2.substring(23));
                if (
    last 5
                    
    str2 "" + (parseInt(str2.substring(02)) + 1);
                else 
                    
    str2 "" + (parseInt(str2.substring(02)));
            }
            else 
                if (
    str2.length 2) {
                    for (
    0str2.lengthi++) {
                        
    str2 += "0";
                    }
                }
            var 
    str1.replace(/\./g'');
            
    input.value insertPoints(v) + "," str2;
            
        }
        else {
            var 
    value.replace(/\./g'');
            
    input.value insertPoints(v) + ",00";
        }
        
    }

    function 
    insertPoints(value){
        var 
    len value.length;
        var 
    counter 0;
        for (
    len 1>= 0i--) {
            
    counter++;
            
            if (
    counter == && != 0) {
                var 
    s1 value.substring(0i);
                var 
    s2 value.substring(ivalue.length);
                
    value s1 "." s2;
                
                
    counter 0;
            }
        }
        return 
    value;

    poi ti è sufficiente ussare questa sintassi (che è DOM0 e quindi si può migliorare, ma funziona comunque)

    Codice PHP:
    <input type="text" onblur="textFormatter(this)"/> 
    L'ho messo sull'evento onBlur ovvero quando l'input perde il focus.
    Grazie per la risposta, ho provato a usarlo ma credo abbia qualche problema...
    se ad esempio digito un importo nella textbox e tolgo il focus il numero restiruito è ,00

  6. #6
    strano l'ho provato con Firefox e con IE 6 e 7 e funziona, forse non ti è chiaro il sistema:

    tu inserirsci un numero qualsiasi, quando perde il focus lui, lo script, controlla se c'è la "," se si, quello che c'è dopo è tagliato a 2 cifre con arrotondamento corretto, mentre quello che c'è prima è, prima privato di eventuali ".", poi gli vengono inseriti i punti nei posti corretti (ogni tre cifre).

    Tipo se tu inserisci il numero :

    112453,225
    poi clicchi fuori dall'input o premi tab il numero diventa:

    112.453,22

  7. #7
    Ok capito quello che intendevi, il problema è che dovrebbe fare il controllo del numero inserito mentre viene digitato.
    Se il numero non ha cifre decimali, lo script le dovrebbe aggiungere per completare l'importo (1000 --> 1.000,00 sempre mentre viene digitato), altrimenti le cifre decimali sono state già inserite e dovrebbe inserire solo la formattazione della parte intera (1000,15 -->1.000,15 sempre mentre viene digitato).
    Spero di essere stato + dettagliato adesso.
    Grazie 1000 per l'aiuto che mi stai dando!

  8. #8
    tu lo sai vero che facendo così chiunque si troverebbe spiazzato?

    Fai l'esempio:
    inserisci 1

    il valore diventa 1,00 col cursore dopo l'ultimo 0

    A questo punto se vuoi inserire altro devi premere la freccia sx 3 volte poi inserisci 2 e ti ritrovi col cursore nel punto di prima con value = 12,00

    Insomma è un casino.

  9. #9
    Originariamente inviato da viscocesco
    Ok capito quello che intendevi, il problema è che dovrebbe fare il controllo del numero inserito mentre viene digitato.
    Se il numero non ha cifre decimali, lo script le dovrebbe aggiungere per completare l'importo (1000 --> 1.000,00 sempre mentre viene digitato), altrimenti le cifre decimali sono state già inserite e dovrebbe inserire solo la formattazione della parte intera (1000,15 -->1.000,15 sempre mentre viene digitato).
    Spero di essere stato + dettagliato adesso.
    Grazie 1000 per l'aiuto che mi stai dando!
    Hai ragione, ho un utente veramente cogli...

    Grazie 1000 per il tuo aiuto

  10. #10
    Utente di HTML.it L'avatar di Rafio
    Registrato dal
    Mar 2005
    Messaggi
    200
    Comunque escono i due zero anche a me.
    "Programmare" la vita non serve... è per questo che mi sfogo sul computer!
    :maLOL:

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.