Máscara valor que funciona


por Mauricio Junior em 1/1/2011 0



Veja como colocar uma máscara no campo text simples e fácil. Segue o código abaixo.



//Verifica se o valor passado é vazio, ou só tem espaço
function f_eVazio(sString){
	var regEspaco = /\s/g;
	sString = sString.replace(regEspaco, "");
	if (sString == ""){
		return true;
	} else {
		return false;
	}
}


//Permite somente caracteres numéricos
//Ex: onKeyPress="f_bSoNumero(event.keyCode)"
// Autor: Adriano Pamplona
function f_bSoNumero(keyCodigo){
	if (keyCodigo!=null){
		if ((keyCodigo >= 48 && keyCodigo <= 57)){return true;}
		else {event.keyCode = 0;}
	}
}


//
// mascara o valores reais.
// ex: onKeyPress="f_sMascaraReal(event.keyCode,null);" onKeyUp="f_sMascaraReal(null,this);"
// funções utilizadas: f_sMascaraInteiro
// Autor: Adriano Pamplona
//
var obj2='';
function f_sMascaraReal(keyCodigo,obj){
	//obj2 = '';

	if (obj){
		obj2 = obj;
		obj.onfocus = function anonymous() {
			obj.select();
			obj.onkeyup = function anonymous() {

			}
		}
	}

	if (obj2){
		obj2.onkeyup = function anonymous() {
			f_sMascaraReal(null,obj2);
		}
	}

	if (keyCodigo!=null){
		f_sMascaraInteiro(keyCodigo,null);
	}


	if (keyCodigo==null){
		var vRetorno = "";
		vValor = obj.value;
		switch (vValor.length){
			case 0:
				vRetorno = "0,00";
				break;
			case 1:
				vRetorno = "0,0"+vValor;
				break;
			case 2:
				vRetorno = "0,"+vValor;
				break;
			default:
				vValor = vValor.replace(",","");
				vValor = vValor.replace(".","");
				vValor = f_sColocaString(vValor,",",2);
				if (vValor.charAt(0)==0){vValor = vValor.substr(1,vValor.length);}
				if (vValor.charAt(0)==","){vValor = vValor.substr(1,vValor.length);}
				if (vValor.length==2){vValor = "0,"+vValor;}

				if (vValor.length > 6){
					var bPonto = /\./g;
					var vValorTemp = vValor.substr(0,vValor.indexOf(","))
					var vValorTemp = vValorTemp.replace(bPonto,"");
					var vRet = "";
					cont = 0;
					for (var i = vValorTemp.length; i >= 0; i--){
						vRet = vValorTemp.charAt(i) + vRet;
						if (cont == 3){
							vRet = "." + vRet;
							cont = 0;
						}
						cont ++;
					}
					while (vRet.charAt(0)=="." || vRet.charAt(0)=="0"){
						vRet = vRet.substr(1,vRet.length);
					}
					vValor = vRet + vValor.substr(vValor.indexOf(","),vValor.length);
				}
				vRetorno = vValor;
		}
		//obj.select();
		//alert(vRetorno);
		obj.value = vRetorno;
	}


}

//
// mascara de valores inteiros
// o parâmetro passado tem que ser o código da tecla
// ex:  onKeyPress="f_sMascaraInteiro(event.keyCode,null);" onKeyUp="f_sMascaraInteiro(null,this);"
//
function f_sMascaraInteiro(keyCodigo,obj){
	if (keyCodigo!=null){
		if ((keyCodigo >= 48 && keyCodigo <= 57)){return true;}
		else {event.keyCode = 0;}
	}
	if (obj!=null){
		var vRetorno = "";
		vValor = obj.value;

		switch (vValor.length){
			case 0:
				vRetorno = "0";
				break;
			default:
				if (vValor.length >= 4){
					var bPonto = /\./g;
					var vValorTemp = vValor
					var vValorTemp = vValorTemp.replace(bPonto,"");
					var vRet = "";
					cont = 0;
					for (var i = vValorTemp.length; i >= 0; i--){
						vRet = vValorTemp.charAt(i) + vRet;
						if (cont == 3){
							vRet = "." + vRet;;
							cont = 0;
						}
						cont ++;
					}
					while (vRet.charAt(0)=="." || vRet.charAt(0)=="0"){
						vRet = vRet.substr(1,vRet.length)
					}
					vValor = vRet;
				}
				vRetorno = vValor;
		}
		obj.value = vRetorno;}
}

//
// insere um caracter onde quer que queira.
// parametros: string com o valor , caracter a ser inserido, index da string a ser inserida.
// o index da string é da direita para a esquerda
// ex: f_sColocaString("xxx",".",2) retorna x.xx
// Autor: Adriano Pamplona
//
function f_sColocaString(vSt,vChar,vCasa){
	var vStRetorno = "";
	if (vSt.indexOf(",")!=-1){
		vBusVir = /\,/g;
		vSt = vSt.replace(vBusVir,"");}
	for (var i = 0; i < vSt.length; i++){
		if (i == (vSt.length - parseInt(vCasa, 10))){
			vStRetorno = vStRetorno + vChar ;}
		vStRetorno = vStRetorno + vSt.charAt(i);
	}
	return vStRetorno;
}






	
	

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

SELECT INSERT
Trabalhando com Cookie (parte II)
Technet Wiki em Português
Upload sempre NULL
Mais detalhes sobre o HTC Touch HD 2 com o possível Windows Mobile 7
As várias maneiras de mandar e-mail utilizando .NET
Vídeo Microsoft Visual SourceSafe Parte III 3/3
Encontrar o valor no texto
Mais um certificado Microsoft
Mensagem JavaScript com .NET
Vídeo - Microsoft Surface: The Power
Vídeo mostrando como validar vários formulários
Resources e Internacionalização usando Visual Studio.NET 2005 (Parte IV)
Chamando Programas de Dentro do Windows Forms
101 Exemplos de Linq
Clique ENTER usando C#.NET
Ebook: Desenvolvendo WebServices
Escrevendo e Controlando Log de Erro
GridView Parte II
Vídeo: Série Atlas.NET - Parte I
Vídeo aula explicando o que é o FreeTextBox e como utilizar em seu projetos ASP.NET.
Adicionar uma coluna em um DataTable
Formatando String de Vários Tipos
Vídeo Sobre Atributes e String Builder com Visual Studio .NET 2005
Membership
Nem tudo é o que parece!
Comunicação .NET e VB 6.0 – Parte I
Dica Importante SQL Server 2008 Management Studio
Dica para Auto Completar Código
Public Interface
Anime-se com o Silverlight
Misturando dados
Windows Phone 7 com Microsoft TellMe
Escrever log de erro e warning
Atalho novo, formatar e concatenar usando Visual Studio .NET 2010