Ir para conteúdo

POWERED BY:

Arquivado

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

shumi

Formatação imediata

Recommended Posts

Galera,

Olha o chato aqui novamente...

 

Eu tenho essa função aqui

 

<script LANGUAGE="JavaScript">function formatCurrency(num) {num = num.toString().replace(/\$|\,/g,'');if(isNaN(num))num = "0";sign = (num == (num = Math.abs(num)));num = Math.floor(num*100+0.50000000001);cents = num%100;num = Math.floor(num/100).toString();if(cents<10)cents = "0" + cents;for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)num = num.substring(0,num.length-(4*i+3))+'.'+num.substring(num.length-(4*i+3));return (((sign)?'':'-') + 'R$ ' + num + ',' + cents);}

e ela funciona perfeitamente em um outro script, mas quando se trata de resultado de uma operação matematica, como eu faço que na hora que o usuario estiver digitando um dado em um campo esse campo já fique formatado na hora. tipo ele digita 1000 e na hora que ele estiver digitando o 3º zero já apareca o ponto???

 

 

Valeu!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Adriano,Mudei onde estava form para o nome do meu formulario ai ficou assim:

<script language="JavaScript">function FormataValor(campo,tammax,teclapres) {var tecla = teclapres.keyCode ? teclapres.keyCode : teclapres.which ? teclapres.which : teclapres.charCode;vr = document.cadastro[campo].value;vr = vr.replace( "/", "" );vr = vr.replace( "/", "" );vr = vr.replace( ",", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );tam = vr.length;if (tam < tammax && tecla != 8){ tam = vr.length + 1; }if (tecla == 8 ){ tam = tam - 1; }if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){if ( tam <= 2 ){document.cadastro[campo].value = vr; }if ( (tam > 2) && (tam <= 5) ){document.cadastro[campo].value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 6) && (tam <= 8) ){document.cadastro[campo].value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 9) && (tam <= 11) ){document.cadastro[campo].value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 12) && (tam <= 14) ){document.cadastro[campo].value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 15) && (tam <= 17) ){document.cadastro[campo].value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );}}}</script>
Uso
<form name="cadastro" method="post" action="nosso_preco_valida.asp"><input name="preco" type="text" id="preco" onKeyDown="FormataValor('valor', 13, event)">
mas ai deu erro:

'document.cadastro[...].value' é nulo ou não é um objeto

eu poderia ter mudado o nome ou errei outras coisas a mais???Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei para

<input name="preco" type="text" id="valor" onKeyDown="FormataValor('valor', 13, event)">
e deu o erro:

'vr' é nulo ou não é objeto

não tem nada a ver por ser campos que se forma através de um loop não né???Valeu!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adriano,Ficou assim:

<input name="preco" type="text" id="preco" onKeyDown="FormataValor('preco', 13, event)">
e deu o erro:

'vr' é nulo ou não é objeto

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adriano,

 

Realmente separado do meu script funcionou, mas quando uni à ele dá aquele erro...

 

da uma olhada nele todo e veja se sabe onde pode estar impedindo o funcionamento, por favor.

 

<%set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MaPpath("dbsistema.mdb")Conexcao.openif NOT (Session("logado")) ThenResponse.Redirect "index.asp"Response.EndEnd Ifcod = Request("cod")estabelecimento = Request("estabelecimento")data = Request("data")'sId = request("id")sql = "select * from dados where cod=" & codSet rs=Conexcao.Execute(sql)%><html><head><title>Sistema NewStyle</title> <style type="text/css"><!--body {	background-color: #FFFFFF;	}	.texto10 {	font-family: Arial, Helvetica, sans-serif;	font-size: 10px;	color: #464646;		}		.texto11 {	font-family: Arial, Helvetica, sans-serif;	font-size: 13px;	color: #464646;	}-->  </style><script language="JavaScript">function FormataValor(campo,tammax,teclapres) {var tecla = teclapres.keyCode ? teclapres.keyCode : teclapres.which ? teclapres.which : teclapres.charCode;vr = document.cadastro[campo].value;vr = vr.replace( "/", "" );vr = vr.replace( "/", "" );vr = vr.replace( ",", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );tam = vr.length;if (tam < tammax && tecla != 8){ tam = vr.length + 1; }if (tecla == 8 ){ tam = tam - 1; }if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){if ( tam <= 2 ){document.cadastro[campo].value = vr; }if ( (tam > 2) && (tam <= 5) ){document.cadastro[campo].value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 6) && (tam <= 8) ){document.cadastro[campo].value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 9) && (tam <= 11) ){document.cadastro[campo].value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 12) && (tam <= 14) ){document.cadastro[campo].value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 15) && (tam <= 17) ){document.cadastro[campo].value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );}}}</script></head><body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><img src="topo.jpg"><p>  <style type="text/css"><!-- CSS body {	background-color: #FFFFFF;	}	.texto10 {	font-family: Arial, Helvetica, sans-serif;	font-size: 10px;	color: #464646;}	.texto11 {	font-family:Arial, Helvetica, sans-serif;	font-size:13px;	color: #464646;	}--></style>  </p><p align="center"><span class="texto11">Dados  da ação <%=rs("acao")%></span></p><center>	  <form name="cadastro" method="post" action="nosso_preco_valida.asp">	<p>	   <input type="hidden" name="cod" value="<%=cod%>">	   <input type="hidden" name="estabelecimento" value="<%=estabelecimento%>">	   <input type="hidden" name="data" value="<%=data%>">	   	</p>	<p><span class="texto11">Nosso preço :	</span></p>					   <%		MINHAVAR = rs("nosso_produto")		MEUARRAY = SPLIT(MINHAVAR,",") %>		  <%		FOR I = LBOUND(MEUARRAY) TO UBOUND(MEUARRAY)			%>			<%IF TRIM(MEUARRAY(I)) <> "" THEN%>	<table width="457" border="1" bordercolor="#00CCFF">	  <tr>					 <td width="70"><span class="texto10">Produto:</span></td>	 		<td width="175"><span class="texto10">		   <input name="produto" id="produto" type="text" value="<%=(MEUARRAY(I))%>" readonly="readonly">					  		   		  		 	</span></td>	<td><span class="texto10">Preço :</span></td>	<td><input name="preco" type="text" id="preco" onKeyDown="FormataValor('preco', 13, event)"></td>			</tr></table>  <%END IF%>			<%NEXT%>			<p>	  	</p>	<p><span class="texto11">Preço da concorrencia:	</span></p>	 <%		MINHAVAR = rs("concorrente_produto")		MEUARRAY = SPLIT(MINHAVAR,",") %>			<%		FOR I = LBOUND(MEUARRAY) TO UBOUND(MEUARRAY)			%>			<%IF TRIM(MEUARRAY(I)) <> "" THEN%>	<table width="457" border="1" bordercolor="#00CCFF">	  <tr>				  <td width="70"><span class="texto10">Produto:</span></td>	   		<td width="175"><span class="texto10">	<input name="produto_con" id="produto_con" type="text" value="<%=(MEUARRAY(I))%>" readonly="readonly">   </span></td>	<td><span class="texto10">Preço :</span></td>	<td><input name="preco_con" type="text" id="preco_con" onKeyDown="FormataValor('valor', 13, event)"></td>			</tr></table>		<%END IF%>			<%NEXT%>				  	<br>	<input type="submit" name="Submit" value="Enviar">  </form></center><center><p> </p>  <p>	<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="50" height="50">	  <param name="movie" value="voltar4.swf">	  <param name="quality" value="high">	  <embed src="voltar4.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="50" height="50"></embed>	</object>	<br></p></center><p><img src="imagens/rodape.gif" width="779" height="44"></p></body></html>

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não Adriano!

 

Pode observar eu tenho dois campos veja:

 

<input name="preco" type="text" id="preco" onKeyDown="FormataValor('preco', 13, event)">

e

 

<input name="preco_con" type="text" id="preco_con" onKeyDown="FormataValor('valor', 13, event)">

e agora tirei o final do segundo deixando assim:

 

<input name="preco_con" type="text" id="preco_con">

Mas não formata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudei Adriano, mas não formata nenhum dos dois campos que preciso que formate!Será pq meu campo é gerado por um loop?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adriano,

É a mesma história sim... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

Fiz assim:

 

<input name="preco" type="text" id="preco<%=(MEUARRAY(I))%>" onKeyDown="FormataValor('preco', 13, event)">

e assim:

 

<input name="preco_con" type="text" id="preco_con <%=(MEUARRAY(I))%>" onKeyDown="FormataValor('preco_con', 13, event)">

Tá certo o que fiz??

Não formatou.... :wacko:

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Adriano,

 

Quase funcionou...

 

Fiz assim:

 

<script language="JavaScript">function FormataValor(campo,tammax,teclapres) {var tecla = teclapres.keyCode ? teclapres.keyCode : teclapres.which ? teclapres.which : teclapres.charCode;vr = document.getElementById(campo).value;vr = vr.replace( "/", "" );vr = vr.replace( "/", "" );vr = vr.replace( ",", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );vr = vr.replace( ".", "" );tam = vr.length;if (tam < tammax && tecla != 8){ tam = vr.length + 1; }if (tecla == 8 ){ tam = tam - 1; }if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){if ( tam <= 2 ){document.getElementById(campo).value = vr; }if ( (tam > 2) && (tam <= 5) ){document.getElementById(campo).value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 6) && (tam <= 8) ){document.getElementById(campo).value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 9) && (tam <= 11) ){document.getElementById(campo).value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 12) && (tam <= 14) ){document.getElementById(campo).value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }if ( (tam >= 15) && (tam <= 17) ){document.getElementById(campo).value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );}}}</script>

Uso:

 

<input name="preco" type="text" id="preco <%=(MEUARRAY(I))%>" onKeyDown="FormataValor('preco', 13, event)"></td>

e

 

<input name="preco_con" type="text" id="preco_con <%=(MEUARRAY(I))%>" onKeyDown="FormataValor('preco_con', 13, event)">

 

Só que quando tem mais de um produto e coloco um numero no outro campo o numero que esta assim: 1.000,00 fica assim: 10.000,0

 

Como que posso arrumar isso?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou perfeito!!!!!Só mais uma coisinha...rsComo que faço pra colocar o "R$"?Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei melhor não usar o R$ e ao inves das "," dos centavos eu coloquei pontos "." por causa que meu banco de dados separa os produtos entre virgulas e ia ficar ruim pra fazer os relatorios depois!!!

 

Valeu Adriano pela ajuda!!!!!!!!!!!!!!!!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

hoje eu vou encher um pouco o saco no forum de JS, pois estou finalizando toda a parte de inserção de dados do sistema e só falta algumas coisas em JS, pois o resto ta tudo certinho!!!

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.