Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171

    formattare con toFixed()

    ho vari campi che dovrebbero contenere valori numerici con due decimali.
    se scrivo 123 all'uscita dal campo dovrebbe scrivere 123,00-
    come posso utilizzare la funzione toFixed()??

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    codice:
    tuoNumero.toFixed(2)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    in questo caso;
    ho questo input:
    <input type="text" name="importo" onblur=".....?????>
    come posso utilizzare laf funzione??

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    boh... io farei così...

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="it" />
    <title>Esempio per il Forum di HTML.it</title>
    <script type="text/javascript">
    	function fissaValore() {
    		document.miaForm.importo.setUserData("sOldValue", parseFloat(document.miaForm.importo.value).toFixed(2), null);
    	}
    
    	function controllaValore() {
    		if (isFinite(document.miaForm.importo.value)) { fissaValore(); }
    		document.miaForm.importo.value = document.miaForm.importo.getUserData("sOldValue");
    	}
    </script>
    </head>
    
    <body onload="fissaValore();">
    
    <form name="miaForm">
    <input type="text" name="importo" onblur="controllaValore();" value="0.00" />
    </form>
    
    </body>
    </html>

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    anche se io ho 7 campi da controllare?

  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="it" />
    <title>Esempio per il Forum di HTML.it</title>
    <script type="text/javascript">
    	function storeValue(oToBeFixed) {
    		oToBeFixed.setUserData("oldValue", parseFloat(oToBeFixed.value).toFixed(2), null);
    	}
    
    	function checkValue(oMyField) {
    		if (isFinite(oMyField.value)) { storeValue(oMyField); }
    		oMyField.value = oMyField.getUserData("oldValue");
    	}
    
    	function initFixedFields() {
    		storeValue(document.miaForm.importo1);
    		storeValue(document.miaForm.importo2);
    		storeValue(document.miaForm.importo3);
    		storeValue(document.miaForm.importo4);
    		storeValue(document.miaForm.importo5);
    		storeValue(document.miaForm.importo6);
    		storeValue(document.miaForm.importo7);
    	}
    </script>
    </head>
    
    <body onload="initFixedFields();">
    
    <form name="miaForm">
    <input type="text" name="importo1" onchange="checkValue(this);" value="0.00" />
    <input type="text" name="importo2" onchange="checkValue(this);" value="0.00" />
    <input type="text" name="importo3" onchange="checkValue(this);" value="0.00" />
    <input type="text" name="importo4" onchange="checkValue(this);" value="0.00" />
    <input type="text" name="importo5" onchange="checkValue(this);" value="0.00" />
    <input type="text" name="importo6" onchange="checkValue(this);" value="0.00" />
    <input type="text" name="importo7" onchange="checkValue(this);" value="0.00" />
    </form>
    
    </body>
    </html>

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    ho provato cosi:
    <script type="text/javascript">
    function storeValue(oToBeFixed) {
    oToBeFixed.setUserData("oldValue", parseFloat(oToBeFixed.value).toFixed(2), null);
    }

    function checkValue(oMyField) {
    if (isFinite(oMyField.value)) { storeValue(oMyField); }
    oMyField.value = oMyField.getUserData("oldValue");
    }

    function initFixedFields() {
    storeValue(document.form1.importo1);
    storeValue(document.form1.importo2);
    }
    </script>

    <body onload="initFixedFields();">
    nei campi testo= onChange="checkValue(this);"

    ma non funziona
    non è che devo correnggere
    function storeValue

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Per come avevo scritto la funzione i campi devono avere un valore predefinito e ben formattato all'inizio (io avevo messo value="0.00"). Se vuoi evitare tutto ciò, puoi fare così:

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Language" content="it" />
    <title>Esempio per il Forum di HTML.it</title>
    <script type="text/javascript">
    	function checkValue(oToBeFixed) {
    		var nParsedNum = parseFloat(oToBeFixed.value);
    		if (isFinite(nParsedNum)) { oToBeFixed.setUserData("fixedValue", nParsedNum.toFixed(2), null); }
    		oToBeFixed.value = oToBeFixed.getUserData("fixedValue");
    	}
    
    	function initFixedFields() {
    		document.form1.importo1.setUserData("fixedValue", "0.00", null);
    		document.form1.importo2.setUserData("fixedValue", "0.00", null);
    		document.form1.importo3.setUserData("fixedValue", "0.00", null);
    		document.form1.importo4.setUserData("fixedValue", "0.00", null);
    		document.form1.importo5.setUserData("fixedValue", "0.00", null);
    		document.form1.importo6.setUserData("fixedValue", "0.00", null);
    		document.form1.importo7.setUserData("fixedValue", "0.00", null);
    	}
    </script>
    </head>
    
    <body onload="initFixedFields();">
    
    <form name="form1">
    
    
    
    <input type="text" name="importo1" onblur="checkValue(this);" />
    
    <input type="text" name="importo2" onblur="checkValue(this);" />
    
    <input type="text" name="importo3" onblur="checkValue(this);" />
    
    <input type="text" name="importo4" onblur="checkValue(this);" />
    
    <input type="text" name="importo5" onblur="checkValue(this);" />
    
    <input type="text" name="importo6" onblur="checkValue(this);" />
    
    <input type="text" name="importo7" onblur="checkValue(this);" />
    </p>
    </form>
    
    </body>
    </html>
    Se i tuoi campi hanno davvero come nome «importo + [NUMERO DA 1 A 7]», puoi semplificare la funzione initFixedFields così:

    codice:
    	function initFixedFields() {
    		for (var nFieldId = 1; nFieldId < 8; nFieldId++) {
    			document.form1["importo" + nFieldId].setUserData("fixedValue", "0.00", null);
    		}
    	}
    Ah, dimenticavo! Ho usato degli standard piuttosto nuovi:

    ...magari controlla che funzioni su tutti i maggiori browser!!

    P.S. Ho anche notato che funziona meglio se sostituiamo l'evento onchange con onblur, come avevi scritto tu all'inizio...

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    come nome campi sono:
    lordo
    tara
    netto

  10. #10
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da tigre2209
    come nome campi sono:
    lordo
    tara
    netto
    Ma non erano sette??

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.