Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: formattare importo

  1. #1

    formattare importo

    Sto diventando scemo... non riesco a trovare una funzione da lanciare all'onblur che mi formatta un importo in euro.

    ovvero se uno inserisce 10 all'uscita del textbox deve uscire 10,00

    così come se uno mette 10,234 deve visualizzare 10,23

    quindi deve prevedere come decimali la virgola.

    I caratteri ammessi nella textbox sono i numeri e la virgola, tutti gli altri sono inibiti da una funzione dell'onkeypress

    qualcuno ha una funzione pronta?

    Grazie
    Michele

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    La prossima volta fai una ricerca nel forum, se n'è discusso appena tre giorni fa: http://forum.html.it/forum/showthrea...4#post13376761

  3. #3
    grazie mille, pure le migliaia e il valore originale al focus... non ho parole.

    la ricerca l'ho fatta ma dopo 15 minuti che stavo vedendo altre discussioni su argomenti simili ci ho rinunciato, non avevo visto quella di 3 giorni fa ma certe anche del 2005 se non sbaglio :|

    grazie ancora
    Michele

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Di niente… prova anche questa, è più semplice e non mette i punti sulle migliaia…

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function numbersOnly(oMyField1, oKeyEvent) {
    	var nChar = (oKeyEvent || window.event || { charCode: 0 }).charCode, sChar = String.fromCharCode(nChar), rSeparator = /,/;
    	return nChar === 0 || /\d/.test(sChar) || (rSeparator.test(sChar) && !rSeparator.test(oMyField1.value));
    }
    
    function formatNumber(oMyField2) {
    	oMyField2.value = parseFloat(oMyField2.value.replace(",",".")).toFixed(2).replace(".",",");
    }
    
    function unformatNumber(oMyField3) {
    	oMyField3.value = oMyField3.value.replace(/,00|(,\d)0/g, "$1");
    }
    </script>
    </head>
    
    <body>
    <form name="myForm">
    
    
    Inserire importo: <input type="text" name="importo" value="5000,00" onblur="formatNumber(this);" onfocus="unformatNumber(this);" onkeypress="return numbersOnly(this, event)"; onpaste="return false;" /></p>
    </form>
    </body>
    </html>

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Aspetta! Se vuoi quella con le migliaia, usa quest'altra, ho fatto una piccola correzione (sottigliezze &hellip;in rosso)

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function numbersOnly(oMyField1, oKeyEvent) {
    	var nChar = (oKeyEvent || window.event || { charCode: 0 }).charCode, sChar = String.fromCharCode(nChar), rSeparator = /,/;
    	return nChar === 0 || /\d/.test(sChar) || (rSeparator.test(sChar) && !rSeparator.test(oMyField1.value));
    }
    
    function formatNumber(oMyField2) {
    	var aFragms = parseFloat(oMyField2.value.replace(/\./g, "").replace(",",".")).toFixed(2).split(".");
    	oMyField2.value = aFragms[0].replace(/(\d{3})+$/g, ".$&").replace(/^\./, "").replace(/\d{3}(?!$)/g, "$&.") + "," + aFragms[1];
    }
    
    function unformatNumber(oMyField3) {
    	oMyField3.value = oMyField3.value.replace(/\.|,00|(,\d)0/g, "$1");
    }
    </script>
    </head>
    
    <body>
    <form name="myForm">
    
    
    Inserire importo: <input type="text" name="importo" value="5.000,00" onblur="formatNumber(this);" onfocus="unformatNumber(this);" onkeypress="return numbersOnly(this, event)"; onpaste="return false;" /></p>
    </form>
    </body>
    </html>

  6. #6
    ma l'altra pure mi faceva vedere i puntini delle migliaia.

    con questo che cambia?

  7. #7
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da Micky^
    ma l'altra pure mi faceva vedere i puntini delle migliaia.

    con questo che cambia?
    Cambia che scrivi 60,5, al blur diventa 60,50 e al focus ritorna 60,5. Prima diventava 60,50 al blur ma non ritornava 60,5 al focus (mi sto riferendo ai decimali con i centesimi pari a 0). Sottigliezze, come ti dicevo Questa correzione è presente nelle ultime due versioni (una che non mette i puntini delle migliaia, l'altra che li mette).

  8. #8
    ti do una info, ho trovato un bug piccolo, se metti solo la "," e esci ti da "NaN,undefined"

    potresti aggiungere che se il carattere digitato è "," ed è il primo carattere non lo deve scrivere... questa funzione è uscita proprio fica quindi bisogna perfezionarla e poi conservarla ovviamente

  9. #9
    altra cosetta,

    se entri nel campo e poi esci senza scrivere nulla appare lo stesso errore : NaN,undefined

    uso google chrome se ti serve sapere il browser utilizzato

    ciao
    Michele

  10. #10
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da Micky^
    ti do una info, ho trovato un bug piccolo, se metti solo la "," e esci ti da "NaN,undefined"

    potresti aggiungere che se il carattere digitato è "," ed è il primo carattere non lo deve scrivere... questa funzione è uscita proprio fica quindi bisogna perfezionarla e poi conservarla ovviamente
    Originariamente inviato da Micky^
    altra cosetta,

    se entri nel campo e poi esci senza scrivere nulla appare lo stesso errore : NaN,undefined

    uso google chrome se ti serve sapere il browser utilizzato

    ciao
    Michele
    Ok, grazie delle segnalazioni! In rosso le aggiunte:


    Versione senza i puntini per le migliaia:

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function numbersOnly(oMyField1, oKeyEvent) {
    	var nChar = (oKeyEvent || window.event || { charCode: 0 }).charCode, sChar = String.fromCharCode(nChar), rSeparator = /,/;
    	return nChar === 0 || /\d/.test(sChar) || (rSeparator.test(sChar) && !rSeparator.test(oMyField1.value));
    }
    
    function formatNumber(oMyField2) {
    	oMyField2.value = parseFloat("0" + oMyField2.value.replace(",",".")).toFixed(2).replace(".",",");
    }
    
    function unformatNumber(oMyField3) {
    	oMyField3.value = oMyField3.value.replace(/(?:^0)?,00|(,\d)0/g, "$1");
    }
    </script>
    </head>
    
    <body>
    <form name="myForm">
    
    
    Inserire importo: <input type="text" name="importo" value="5000,00" onblur="formatNumber(this);" onfocus="unformatNumber(this);" onkeypress="return numbersOnly(this, event);" onpaste="return false;" /></p>
    </form>
    </body>
    </html>
    Versione con i puntini per le migliaia:

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function numbersOnly(oMyField1, oKeyEvent) {
    	var nChar = (oKeyEvent || window.event || { charCode: 0 }).charCode, sChar = String.fromCharCode(nChar), rSeparator = /,/;
    	return nChar === 0 || /\d/.test(sChar) || (rSeparator.test(sChar) && !rSeparator.test(oMyField1.value));
    }
    
    function formatNumber(oMyField2) {
    	var aFragms = parseFloat("0" + oMyField2.value.replace(/\./g, "").replace(",",".")).toFixed(2).split(".");
    	oMyField2.value = aFragms[0].replace(/(\d{3})+$/g, ".$&").replace(/^\./, "").replace(/\d{3}(?!$)/g, "$&.") + "," + aFragms[1];
    }
    
    function unformatNumber(oMyField3) {
    	oMyField3.value = oMyField3.value.replace(/\.|(?:^0)?,00|(,\d)0/g, "$1");
    }
    </script>
    </head>
    
    <body>
    <form name="myForm">
    
    
    Inserire importo: <input type="text" name="importo" value="5.000,00" onblur="formatNumber(this);" onfocus="unformatNumber(this);" onkeypress="return numbersOnly(this, event);" onpaste="return false;" /></p>
    </form>
    </body>
    </html>
    New entry! Se preferisci il puntino alto invece del puntino basso (in verde le sostituzioni)&hellip;

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function numbersOnly(oMyField1, oKeyEvent) {
    	var nChar = (oKeyEvent || window.event || { charCode: 0 }).charCode, sChar = String.fromCharCode(nChar), rSeparator = /,/;
    	return nChar === 0 || /\d/.test(sChar) || (rSeparator.test(sChar) && !rSeparator.test(oMyField1.value));
    }
    
    function formatNumber(oMyField2) {
    	var aFragms = parseFloat("0" + oMyField2.value.replace(/\u02D9/g, "").replace(",",".")).toFixed(2).split(".");
    	oMyField2.value = aFragms[0].replace(/(\d{3})+$/g, "\u02D9$&").replace(/^\u02D9/, "").replace(/\d{3}(?!$)/g, "$&\u02D9") + "," + aFragms[1];
    }
    
    function unformatNumber(oMyField3) {
    	oMyField3.value = oMyField3.value.replace(/\u02D9|(?:^0)?,00|(,\d)0/g, "$1");
    }
    </script>
    </head>
    
    <body>
    <form name="myForm">
    
    
    Inserire importo: <input type="text" name="importo" value="5&amp;#729;000,00" onblur="formatNumber(this);" onfocus="unformatNumber(this);" onkeypress="return numbersOnly(this, event);" onpaste="return false;" /></p>
    </form>
    </body>
    </html>

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.