Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ODIR

[Resolvido] fazer calculo pelo firefox

Recommended Posts

boa tarde

 

estou criando um codigo em javascript em uma pagina asp, que faz calculos porem ela sera usada somente pelo firefox, a soma e a subtração funcionaram perfeitamente, a multiplicacao e a divisao nao aceitam as casas decimais o que gera erro no resultado, outra coisa que nao consegui fazer é aparecer o valor da soma dos tres resultados. segue o codigo para que possa ser analisado.

 

desde ja agradeço

 

<script language="JavaScript" type="text/javascript">
function teclas(event){
if(((event.keyCode < 96) || (event.keyCode > 105)) && ((event.keyCode < 48) || (event.keyCode > 57)) ) {
campo.value = campo.value.replace(String.fromCharCode(event.keyCode).toLowerCase(),"");
}
}
function numMoeda(event,campo){
teclas(campo);
str = campo.value;
while(str.search(",") != -1)
str = str.replace(",","");
i = 0;
while(i< str.length){
if(str.substr(i,1) == ".")
str = str.replace(".","");
i++;
}
part1 = str.substr(0,str.length - 2);
while(part1.search(" ") != -1)
part1 = part1.replace(" ","");
part2 = str.substr(str.length - 2,2);
res = "";
i = part1.length;
sob = i % 3;
if((sob != 0) && (i > 2))
res = part1.substr(0,sob) + ".";
else
res = part1.substr(0,sob);
j = 1;
part1 = part1.substr(sob);
i = 0;
while(i < part1.length){
if(j == 3){
if(i + 1 == part1.length)
res = res + part1.substr(i-2,3);
else res = res + part1.substr(i-2,3) + ".";
}
i++;
j = j<3?j+1:1;
}
campo.value = res + "," + part2;
}

function soma() {


campo1 = document.form.valor1.value;
campo1 = campo1.replace(/[.]/g, "");
campo1 = campo1.replace(/[,]/g, "");

campo2 = document.form.valor2.value;
campo2 = campo2.replace(/[.]/g, "");
campo2 = campo2.replace(/[,]/g, "");

if(campo1!="" && campo2!="") {
total = parseFloat(campo1)+parseFloat(campo2);
document.form.total.value=parseFloat(total);


}

campo3 = document.form.valor3.value;
campo3 = campo3.replace(/[.]/g, "");
campo3 = campo3.replace(/[,]/g, "");

campo4 = document.form.valor4.value;
campo4 = campo4.replace(/[.]/g, "");
campo4 = campo4.replace(/[,]/g, "");

if(campo3!="" && campo4!="") {
total1 = parseFloat(campo3)-parseFloat(campo4);
document.form.total1.value=parseFloat(total1);


}

campo5 = document.form.valor5.value;
campo5 = campo5.replace(/[.]/g, "");
campo5 = campo5.replace(/[,]/g, "");

campo6 = document.form.valor6.value;
campo6 = campo6.replace(/[.]/g, "");
campo6 = campo6.replace(/[,]/g, "");

if(campo5!="" && campo6!="") {
total2 = parseFloat(campo5)*campo6;
document.form.total2.value=parseFloat(total2);



}

campo7 = document.form.valor7.value;
campo7 = campo7.replace(/[.]/g, "");
campo7 = campo7.replace(/[,]/g, "");

campo8 = document.form.valor8.value;
campo8 = campo8.replace(/[.]/g, "");
campo8 = campo8.replace(/[,]/g, "");

if(campo7!="" && campo8!="") {
total3 = parseFloat(campo7)/campo8;
document.form.total3.value=parseFloat(total3);


}

}
</script>

<form name="form">
SOMA<p>
<input type="text" name="valor1" value="" onkeyup="soma();numMoeda(event,this)">
<input type="text" name="valor2" value="" onkeyup="soma();numMoeda(event,this);numMoeda(event,total);">
<input type="text" name="total" value=""></p>
<p>
SUBTRAÇÃO<p>
<input type="text" name="valor3" value="" onkeyup="soma();numMoeda(event,this);">
<input type="text" name="valor4" value="" onkeyup="soma();numMoeda(event,this);numMoeda(event,total1);">
<input type="text" name="total1" value=""><p>
MULTIPLICAÇÃO<p>
<input type="text" name="valor5" value="" onkeyup="soma();numMoeda(event,this);">
<input type="text" name="valor6" value="" onkeyup="soma();numMoeda(event,this);numMoeda(event,total2);">
<input type="text" name="total2" value=""><p>
DIVISÃO<p>
<input type="text" name="valor7" value="" onkeyup="soma();numMoeda(event,this);">
<input type="text" name="valor8" value="" onkeyup="soma();numMoeda(event,this);numMoeda(event,total3);">
<input type="text" name="total3" value="">
<p>
TOTAL = SOMA DE TODOS OS RESULTADOS<p>
<input type="text" name="total4" value=""></form></p>

Compartilhar este post


Link para o post
Compartilhar em outros sites
<script type="text/javascript">
function id( el ){
return document.getElementById( el );
}
function num( v ){
var pInt = v.replace( ',', '.' );
return pInt ? parseFloat( pInt ) : 0;
}
function id2num( el ){
return num( id( el ).value );
}
function int2Moeda( v ){
if( v!=Infinity && !isNaN( v ) )
{
	var v = v+'';//forçando string
	v = v.replace( '.', ',' );

	if( v.length==3 ) v = v+'0';
	if( v.indexOf(',')==-1 ) v = v+',00';
}
return v;
}
function soma(){
var total1 = id2num('valor1')+id2num('valor2');
id('total1').value = int2Moeda( total1 );
}
function subtrai(){
var total2 = id2num('valor3')-id2num('valor4');
id('total2').value = int2Moeda( total2 );
}
function multiplica(){
var total3 = id2num('valor5')*id2num('valor6');
id('total3').value = int2Moeda( total3 );
}
function divide(){
var total4 = id2num('valor7')/id2num('valor8');
id('total4').value = int2Moeda( total4 );
}
function total(){
var total5 = num( id('total1').value )+num( id('total2').value )+num( id('total3').value )+num( id('total4').value );
id('total5').value = int2Moeda( total5 );;
}
/**
* @see http://code.imasters.com.br/index.php?/topic/109-mascaras-enquanto-digita-er/
*/
function mascara(o,f){
   v_obj=o
   v_fun=f
   setTimeout("execmascara()",1)
}
function execmascara(){
   v_obj.value=v_fun(v_obj.value)
}
function mvalor(v){
v=v.replace(/\D/g,"");//Remove tudo o que não é dígito
v=v.replace(/(\d)(\d{8})$/,"$1.$2");//coloca o ponto dos milhões
v=v.replace(/(\d)(\d{5})$/,"$1.$2");//coloca o ponto dos milhares

v=v.replace(/(\d)(\d{2})$/,"$1,$2");//coloca a virgula antes dos 2 últimos dígitos
return v;
}
function mnum(v){
v=v.replace(/\D/g,"");//Remove tudo o que não é dígito
return v;
}
</script>

<form action="" method="post">
<fieldset>
	<legend>SOMA</legend>
	<input type="text" name="valor1" id="valor1" onkeyup="soma();total();" onkeypress="mascara( this, mvalor );" />
	<input type="text" name="valor2" id="valor2" onkeyup="soma();total();" onkeypress="mascara( this, mvalor );" />
	<input type="text" name="total1" id="total1" readonly="readonly" />
</fieldset>


<fieldset>
	<legend>SUBTRAÇÃO</legend>
	<input type="text" name="valor3" id="valor3" onkeyup="subtrai();total();" onkeypress="mascara( this, mvalor );" />
	<input type="text" name="valor4" id="valor4" onkeyup="subtrai();total();" onkeypress="mascara( this, mvalor );" />
	<input type="text" name="total2" id="total2" readonly="readonly" />
</fieldset>


<fieldset>
	<legend>MULTIPLICAÇÃO</legend>
	<input type="text" name="valor5" id="valor5" onkeyup="multiplica();total();" onkeypress="mascara( this, mvalor );" />
	<input type="text" name="valor6" id="valor6" onkeyup="multiplica();total();" onkeypress="mascara( this, mnum );" />
	<input type="text" name="total3" id="total3" readonly="readonly" />
</fieldset>


<fieldset>
	<legend>DIVISÃO</legend>
	<input type="text" name="valor7" id="valor7" onkeyup="divide();total();" onkeypress="mascara( this, mvalor );" />
	<input type="text" name="valor8" id="valor8" onkeyup="divide();total();" onkeypress="mascara( this, mnum );" />
	<input type="text" name="total4" id="total4" readonly="readonly" />
</fieldset>

<label>TOTAL = SOMA DE TODOS OS RESULTADOS 
	<input type="text" name="total5" id="total5" /></label>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela ajuda mas continuo com um problema, pois preciso que a multiplicação e adivisao aceite campo com casas decimais iguais aos outros, voce sabe como posso fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

só remover a minha máscara.

 

é que achei q não tinha sentido multiplicar reais por reais..

troque a mnum pela mvalor

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.