"Na hora de Somar e exibir o resultado em um alert acontece este Erro " NaN " help?

3 respostas
A

Transformei os campos em moeda, porém agora na hora de somá-los dá erro NaN.
Antes de transformá-los em moeda, funcionava a soma.

:arrow:[color=blue]Segue o modelo em anexo, para quem puder me ajudar. Só falta somar e subtrair como no código.[/color]

<script language="javascript"> 
  
  
  function moeda(campo, e){   
  
    var SeparadorDecimal = ","
	var SeparadorMilesimo = "."
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '[telefone removido]';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	
	    if (whichCode == 13) return true;
		          key = String.fromCharCode(whichCode); // Valor para o código da Chave
		     if (strCheck.indexOf(key) == -1) 
		return true; // Chave inválida   
		         len = campo.value.length;
		for(i = 0; i < len; i++)
				   if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != SeparadorDecimal)) break;
				      aux = '';
	    for(; i < len; i++)
					   if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i);
					             aux += key;   len = aux.length;   if (len == 0) campo.value = '';
						     if (len == 1) campo.value = '0'+ SeparadorDecimal + '0' + aux;
							    if (len == 2) campo.value = '0'+ SeparadorDecimal + aux; 
								  if (len > 2) {
								             aux2 = '';
										for (j = 0, i = len - 3; i >= 0; i--) {
										     if (j == 3) {
											        aux2 += SeparadorMilesimo; j = 0; }
													aux2 += aux.charAt(i);
													j++; }
													campo.value = '';
													len2 = aux2.length;
										for (i = len2 - 1; i >= 0; i--)
										            campo.value += aux2.charAt(i);
													campo.value += SeparadorDecimal + aux.substr(len - 2, len);}
										    return false;}
											
    function checa(){

 //var valor1 = number;

 var resultado=0;
     valor1 = new Number(document.formCalc.campo1.value);
     valor2 = new Number(document.formCalc.campo2.value);
     valor3 = new Number(document.formCalc.campo3.value);
     valor4 = new Number(document.formCalc.campo4.value);
     valor5 = new Number(document.formCalc.campo5.value);
     valor6 = new Number(document.formCalc.campo6.value);
     valor7 = new Number(document.formCalc.campo7.value);
     valor8 = new Number(document.formCalc.campo8.value);
     valor9 = new Number(document.formCalc.campo9.value);
     valor10 = new Number(document.formCalc.campo10.value);
 
  var resultado = new Number(valor1 + valor2 + valor3 + valor4 + valor5 + valor6 - valor7 - valor8 - valor9 - valor10); alert ('Total do Caixa: = ' + resultado)
 
 
 if (resultado >= 0)
 {
return true;
 }
 else
 {
alert(" OBS: Retirada do Caixa está maior que o Total de entradas no Caixa. "+resultado);
 }
}
</script>
 
<form name="formCalc">
  <p><img src="CaixaElgin.jpg" width="118" height="83"><br>
      <span class="style18"><strong>Digite as Entradas</strong> !!!</span><br>
    <br>
	<input id='alinhar_direita' name="campo1" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Troco Inicial -</span> <span class="style1 style10">A</span> <BR>

  	<input id='alinhar_direita' name="campo2" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Dinheiro -</span> <span class="style11">B</span> <BR>

	<input id='alinhar_direita' name="campo3" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cheque -</span> <span class="style11">C</span> <BR>

	<input id='alinhar_direita' name="campo4" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cartão -</span> <span class="style11">D</span> <BR>

	<input id='alinhar_direita' name="campo5" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Reforço do Caixa -</span> <span class="style11">E</span> <BR>

	<input id='alinhar_direita' name="campo6" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Recebimento Posterior -</span> <span class="style11">F</span> <BR>

  <span class="style20">Digite as Sa&iacute;das !!!</span> <br>
  <br>
	<input id='alinhar_direita' name="campo7" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Sangrias -</span> <span class="style14">G</span> <BR>

	<input id='alinhar_direita' name="campo8" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Despesas da Loja -</span> <span class="style14">H</span> <BR>

	<input id='alinhar_direita' name="campo9" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cupons Cancelados -</span> <span class="style14">I</span> <BR>

	<input id='alinhar_direita' name="campo10" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Troco Final -</span> <span class="style14">J</span> <BR>

  <br>
  <input name="Button" type="button" class="style2" onClick="checa()" value="Click Aqui !!! C&aacute;lcula Total Caixa">
  <br>
  <br>

  <span class="style16 style21"><span class="style10 style25">Atenção!!! </span></span></p>
  <p><span class="style16 style21"><span class="style10"><span class="style23">( O campo  Recebimento Posterior da Entrada ele conta como entrada, por&eacute;m n&atilde;o foi recebido ainda. No entanto se jogar esse valor, ele ter&aacute; que ser subtra&iacute;do do Total do Caixa.....</span></span></span>. <span class="style16 style21"><span class="style10"><span class="style23"> O mesmo acontece com o campo Cupons Cancelados da Sa&iacute;da).</span></span></span></p>
  <br>
</form>

3 Respostas

ViniGodoy

Acho que o primeiro lugar que você está errando é aqui:
http://www.guj.com.br/posts/list/50115.java

A
Antoniolff:
Transformei os campos em moeda, porém agora na hora de somá-los dá erro NaN. Antes de transformá-los em moeda, funcionava a soma.

:arrow:[color=blue]Segue o modelo em anexo, para quem puder me ajudar. Só falta somar e subtrair como no código.[/color]

<script language="javascript"> 
  
  
  function moeda(campo, e){   
  
    var SeparadorDecimal = ","
	var SeparadorMilesimo = "."
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '[telefone removido]';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	
	    if (whichCode == 13) return true;
		          key = String.fromCharCode(whichCode); // Valor para o código da Chave
		     if (strCheck.indexOf(key) == -1) 
		return true; // Chave inválida   
		         len = campo.value.length;
		for(i = 0; i < len; i++)
				   if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != SeparadorDecimal)) break;
				      aux = '';
	    for(; i < len; i++)
					   if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i);
					             aux += key;   len = aux.length;   if (len == 0) campo.value = '';
						     if (len == 1) campo.value = '0'+ SeparadorDecimal + '0' + aux;
							    if (len == 2) campo.value = '0'+ SeparadorDecimal + aux; 
								  if (len > 2) {
								             aux2 = '';
										for (j = 0, i = len - 3; i >= 0; i--) {
										     if (j == 3) {
											        aux2 += SeparadorMilesimo; j = 0; }
													aux2 += aux.charAt(i);
													j++; }
													campo.value = '';
													len2 = aux2.length;
										for (i = len2 - 1; i >= 0; i--)
										            campo.value += aux2.charAt(i);
													campo.value += SeparadorDecimal + aux.substr(len - 2, len);}
										    return false;}
											
    function checa(){

 //var valor1 = number;

 var resultado=0;
     valor1 = new Number(document.formCalc.campo1.value);
     valor2 = new Number(document.formCalc.campo2.value);
     valor3 = new Number(document.formCalc.campo3.value);
     valor4 = new Number(document.formCalc.campo4.value);
     valor5 = new Number(document.formCalc.campo5.value);
     valor6 = new Number(document.formCalc.campo6.value);
     valor7 = new Number(document.formCalc.campo7.value);
     valor8 = new Number(document.formCalc.campo8.value);
     valor9 = new Number(document.formCalc.campo9.value);
     valor10 = new Number(document.formCalc.campo10.value);
 
  var resultado = new Number(valor1 + valor2 + valor3 + valor4 + valor5 + valor6 - valor7 - valor8 - valor9 - valor10); alert ('Total do Caixa: = ' + resultado)
 
 
 if (resultado >= 0)
 {
return true;
 }
 else
 {
alert(" OBS: Retirada do Caixa está maior que o Total de entradas no Caixa. "+resultado);
 }
}
</script>
 
<form name="formCalc">
  <p><img src="CaixaElgin.jpg" width="118" height="83"><br>
      <span class="style18"><strong>Digite as Entradas</strong> !!!</span><br>
    <br>
	<input id='alinhar_direita' name="campo1" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Troco Inicial -</span> <span class="style1 style10">A</span> <BR>

  	<input id='alinhar_direita' name="campo2" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Dinheiro -</span> <span class="style11">B</span> <BR>

	<input id='alinhar_direita' name="campo3" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cheque -</span> <span class="style11">C</span> <BR>

	<input id='alinhar_direita' name="campo4" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cartão -</span> <span class="style11">D</span> <BR>

	<input id='alinhar_direita' name="campo5" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Reforço do Caixa -</span> <span class="style11">E</span> <BR>

	<input id='alinhar_direita' name="campo6" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Recebimento Posterior -</span> <span class="style11">F</span> <BR>

  <span class="style20">Digite as Sa&iacute;das !!!</span> <br>
  <br>
	<input id='alinhar_direita' name="campo7" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Sangrias -</span> <span class="style14">G</span> <BR>

	<input id='alinhar_direita' name="campo8" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Despesas da Loja -</span> <span class="style14">H</span> <BR>

	<input id='alinhar_direita' name="campo9" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cupons Cancelados -</span> <span class="style14">I</span> <BR>

	<input id='alinhar_direita' name="campo10" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Troco Final -</span> <span class="style14">J</span> <BR>

  <br>
  <input name="Button" type="button" class="style2" onClick="checa()" value="Click Aqui !!! C&aacute;lcula Total Caixa">
  <br>
  <br>

  <span class="style16 style21"><span class="style10 style25">Atenção!!! </span></span></p>
  <p><span class="style16 style21"><span class="style10"><span class="style23">( O campo  Recebimento Posterior da Entrada ele conta como entrada, por&eacute;m n&atilde;o foi recebido ainda. No entanto se jogar esse valor, ele ter&aacute; que ser subtra&iacute;do do Total do Caixa.....</span></span></span>. <span class="style16 style21"><span class="style10"><span class="style23"> O mesmo acontece com o campo Cupons Cancelados da Sa&iacute;da).</span></span></span></p>
  <br>
</form>
A
Antoniolff:
Transformei os campos em moeda, porém agora na hora de somá-los dá erro NaN. Antes de transformá-los em moeda, funcionava a soma.

:arrow:[color=blue]Segue o modelo em anexo, para quem puder me ajudar. Só falta somar e subtrair como no código.[/color]

<script language="javascript"> 
  
  
  function moeda(campo, e){   
  
    var SeparadorDecimal = ","
	var SeparadorMilesimo = "."
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '[telefone removido]';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	
	    if (whichCode == 13) return true;
		          key = String.fromCharCode(whichCode); // Valor para o código da Chave
		     if (strCheck.indexOf(key) == -1) 
		return true; // Chave inválida   
		         len = campo.value.length;
		for(i = 0; i < len; i++)
				   if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != SeparadorDecimal)) break;
				      aux = '';
	    for(; i < len; i++)
					   if (strCheck.indexOf(campo.value.charAt(i))!=-1) aux += campo.value.charAt(i);
					             aux += key;   len = aux.length;   if (len == 0) campo.value = '';
						     if (len == 1) campo.value = '0'+ SeparadorDecimal + '0' + aux;
							    if (len == 2) campo.value = '0'+ SeparadorDecimal + aux; 
								  if (len > 2) {
								             aux2 = '';
										for (j = 0, i = len - 3; i >= 0; i--) {
										     if (j == 3) {
											        aux2 += SeparadorMilesimo; j = 0; }
													aux2 += aux.charAt(i);
													j++; }
													campo.value = '';
													len2 = aux2.length;
										for (i = len2 - 1; i >= 0; i--)
										            campo.value += aux2.charAt(i);
													campo.value += SeparadorDecimal + aux.substr(len - 2, len);}
										    return false;}
											
    function checa(){

 //var valor1 = number;

 var resultado=0;
     valor1 = new Number(document.formCalc.campo1.value);
     valor2 = new Number(document.formCalc.campo2.value);
     valor3 = new Number(document.formCalc.campo3.value);
     valor4 = new Number(document.formCalc.campo4.value);
     valor5 = new Number(document.formCalc.campo5.value);
     valor6 = new Number(document.formCalc.campo6.value);
     valor7 = new Number(document.formCalc.campo7.value);
     valor8 = new Number(document.formCalc.campo8.value);
     valor9 = new Number(document.formCalc.campo9.value);
     valor10 = new Number(document.formCalc.campo10.value);
 
  var resultado = new Number(valor1 + valor2 + valor3 + valor4 + valor5 + valor6 - valor7 - valor8 - valor9 - valor10); alert ('Total do Caixa: = ' + resultado)
 
 
 if (resultado >= 0)
 {
return true;
 }
 else
 {
alert(" OBS: Retirada do Caixa está maior que o Total de entradas no Caixa. "+resultado);
 }
}
</script>
 
<form name="formCalc">
  <p><img src="CaixaElgin.jpg" width="118" height="83"><br>
      <span class="style18"><strong>Digite as Entradas</strong> !!!</span><br>
    <br>
	<input id='alinhar_direita' name="campo1" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Troco Inicial -</span> <span class="style1 style10">A</span> <BR>

  	<input id='alinhar_direita' name="campo2" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Dinheiro -</span> <span class="style11">B</span> <BR>

	<input id='alinhar_direita' name="campo3" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cheque -</span> <span class="style11">C</span> <BR>

	<input id='alinhar_direita' name="campo4" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cartão -</span> <span class="style11">D</span> <BR>

	<input id='alinhar_direita' name="campo5" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Reforço do Caixa -</span> <span class="style11">E</span> <BR>

	<input id='alinhar_direita' name="campo6" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Recebimento Posterior -</span> <span class="style11">F</span> <BR>

  <span class="style20">Digite as Sa&iacute;das !!!</span> <br>
  <br>
	<input id='alinhar_direita' name="campo7" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Sangrias -</span> <span class="style14">G</span> <BR>

	<input id='alinhar_direita' name="campo8" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Despesas da Loja -</span> <span class="style14">H</span> <BR>

	<input id='alinhar_direita' name="campo9" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Cupons Cancelados -</span> <span class="style14">I</span> <BR>

	<input id='alinhar_direita' name="campo10" type='text' onkeypress="return(moeda(this, event))" size=20 maxlenght=20 value"">
  &nbsp;<span class="style3">Troco Final -</span> <span class="style14">J</span> <BR>

  <br>
  <input name="Button" type="button" class="style2" onClick="checa()" value="Click Aqui !!! C&aacute;lcula Total Caixa">
  <br>
  <br>

  <span class="style16 style21"><span class="style10 style25">Atenção!!! </span></span></p>
  <p><span class="style16 style21"><span class="style10"><span class="style23">( O campo  Recebimento Posterior da Entrada ele conta como entrada, por&eacute;m n&atilde;o foi recebido ainda. No entanto se jogar esse valor, ele ter&aacute; que ser subtra&iacute;do do Total do Caixa.....</span></span></span>. <span class="style16 style21"><span class="style10"><span class="style23"> O mesmo acontece com o campo Cupons Cancelados da Sa&iacute;da).</span></span></span></p>
  <br>
</form>
Criado 30 de outubro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 3
Participantes 2