Ir para conteúdo

POWERED BY:

Arquivado

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

Klein

Mascara de valor com 3 casas decimais

Recommended Posts

Bom pessoal, estou com 1 script que valida o campo no onkeyup, mas ele é de apenas 2 casas decimais, mas eu estou precisando com 3 para usar em casos de preços de combustivel e até mesmo os litros. Ex: 2,435

Abaixo esta o script que eu ja uso no caso de 2 casas decimais.

 

 

function FormataValor(campo,tammax,teclapres,pForm) {
	var vForm = eval("document."+pForm);
	var tecla = teclapres.keyCode;
	vr = vForm[campo].value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ",", "" );			
	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 (isNaN(vr) || vr.substr(tam-1,1) == " "){
	 vr = vr.substr(0,tam-1);
		vForm[campo].value = vr;
		tam = tam -1;
 }	
 if (tam == 1){
  vForm[campo].value = '0,0'+vr;
 }
	else{
	 if(tam == 2){
   vForm[campo].value = '0,'+vr;
		}
  else{
   if (tam == 4 && vr.substr(0,2) == '00'){
	vForm[campo].value = '0,'+vr.substr(2,4);
   }
		 else{
		  if (tam == 4 && vr.substr(0,1) == 0){
				 vForm[campo].value = vr.substr(1,1)+','+vr.substr(2,2);
				}
			 else{
		if ( (tam > 2) && (tam <= 5) ){
			vForm[campo].value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); 
					}
		if ( (tam >= 6) && (tam <= 8) ){
			vForm[campo].value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); 
					}
		if ( (tam >= 9) && (tam <= 11) ){
			vForm[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) ){
			vForm[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) ){
			vForm[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 );
					}				 
				}
			}
		}
	}
}

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que isso aqui resolve

 

 

function mskDigitos(v){
    v=v.replace(/\D/g,"")  
    v=v.replace(/(\d)(\d{1,3}$)/,"$15Cd{1,3}$)/,"$1.$2")  
    return v
}

Vlw, é quase isto!

Só preciso alterar mais algumas coisas, mas ja ajudou bastante!!

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.