Newsgroup: it.comp.lang.javascript
Titolo: numeri decimali da php, formato in js -_-

ciao, ho una pagina con N righe di oggetti, ognuno con il suo prezzo e
un prezzo aggiuntivo (sono 2 input textfield)
alla fine ho 3 campi: imponibile, iva, totale con iva.
bene ho fatto in modo che se uno mi modifica il valore di uno degli
oggetti mi aggiorna in automatico i 3 totali finali...ma ho qualche
problema coi decimali...visto che il n° di righe (e quindi di campi di
testo) lo sò da php, stampo pure il codice js da php...l'output finale
è questo (esempio con solo 3 righe):
function AggiornaTotali(){
	var totale = null;
	var imponibile = null;
	var iva = null;
//inizio parte creata da php
	var prezzoA = document.getElementById('prezzoA').value;
	var aggiuntaA = document.getElementById('aggiuntaA').value;
	var prezzoB = document.getElementById('prezzoB').value;
	var aggiuntaB = document.getElementById('aggiuntaB').value;
	var prezzoC = document.getElementById('prezzoC').value;
	var aggiuntaC = document.getElementById('aggiuntaC').value;
		imponibile = Math.round((0 + (prezzoA*1) + (aggiuntaA*1)  +
(prezzoB*1) + (aggiuntaB*1)  + (prezzoC*1) + (aggiuntaC*1) ) *100) /
100;
//fine parte creata da php
	document.getElementById('imponibile').value = imponibile;
	iva = (imponibile*20)/100;
	document.getElementById('iva').value = iva;
	document.getElementById('totale').value = (imponibile*1)+(iva*1);
}
e negli input field:
onKeyUp="this.value=this.value.replace(/[a-zA-Z'ì\+ò\\\\/*\-àùèç°§é\<\>;]/,'').replace(/(\.\.)+/,'.').replace(/(,)+/,'.').replace(/(\.\.)+/,'.');
AggiornaTotali();"
in modo che corregga in automatico l'utente che usa la virgola al posto
del punto...
ma i 3 risultati finali non sono sempre con due decimali, come invece
servirebbe a me!
dove sbaglio?


e negli input field:
onKeyUp="this.value=this.value.replace(/[a-zA-Z'ì\+ò\\\\/*\-àùèç°§é\<\>;]/,'').replace(/(\.\.)+/,'.').replace(/(,)+/,'.');


 dove sbaglio?
Qui trovi una soluzione:
http://www.spiderpro.com/bu/bujvsh002.html
e qui trovi molti esempi:
http://www.merlyn.demon.co.uk/js-rndg1.htm
Ciao
Oreste

Oreste ha scritto:

ehm no non funziona...ho semplificato la funzione fdp e rinominata in
Decimali:
function Decimali(myNum, x){
	var dot = myNum.indexOf('.');
	var lenTutto = myNum.length;
	var lenDecimali = (lenTutto-dot)-1;
	var Intero = myNum.substr(0, dot);
	var Decimali = myNum.substr((dot+1), lenDecimali);
	if(Decimali.length > x){
		primiDue = Decimali.substr(0,x);
		terzo = Decimali.substr(x,1);
		if(terzo > 4){
			primiDue++;
		}
		Decimali = primiDue;
	}
	var Finito = Intero + '.' + Decimali;
}
function AggiornaTotali(){
        var totale = null;
        var imponibile = null;
        var iva = null;
//inizio parte creata da php
        var prezzoA = document.getElementById('prezzoA').value;
        var aggiuntaA = document.getElementById('aggiuntaA').value;
        var prezzoB = document.getElementById('prezzoB').value;
        var aggiuntaB = document.getElementById('aggiuntaB').value;
        var prezzoC = document.getElementById('prezzoC').value;
        var aggiuntaC = document.getElementById('aggiuntaC').value;
                imponibile = Math.round((0 + (prezzoA*1) +
(aggiuntaA*1)  +
(prezzoB*1) + (aggiuntaB*1)  + (prezzoC*1) + (aggiuntaC*1) ) *100) /
100;
//fine parte creata da php
        document.getElementById('imponibile').value =
Decimali(imponibile, 2);
        iva = (imponibile*20)/100;
        document.getElementById('iva').value = Decimali(iva, 2);
        totale = (imponibile*1)+(iva*1);
        document.getElementById('totale').value = Decimali(totale, 2);
}
ma mi restituisce l'errore
myNum.indexOf is not a function
nella riga var dot = myNum.indexOf('.');
eppure se metto un bottone con onclick="Decimali(52424.4321, 2)"
funziona...
c'è qualche errore di sintassi o di procedura?!?

 servirebbe a me!
http://groups.google.it/groups/search?hl=it&ie=UTF-8&oe=UTF-8&q=javascript+formattare+cifra
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.