Ir para conteúdo

POWERED BY:

Arquivado

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

Tiago Araujo

Função JavaScript para formatar data

Recommended Posts

Não tive muito tempo de procurar alguma função parecida no fórum antes de postá-la.

 

Função para formatar data, campo só aceita números, adicionando separadores entre dia, mês e ano.

Em breve, adaptarei na função para poder entrar somente valor menor do que 31 no dia, e menor do que 12 no mês.

 

Testei em Firefox, Internet Explorer 7, Internet Explorer 6 (Quem testar no Safari ou no FF do Mac, comente nesse tópico)

 

Agradeço se não remover a linha de crédito.

 

 

 

<input type="text" name="data" maxlength="10" onkeyup="formata_data(this,event)"><script>	function formata_data(x,tecla){ 		// Por Tiago Araujo Silva (tiago@tiagoaraujo.com)				separador="/"; // Você pode definir o separador. Ex: "/" ou "-" ou "."				tecla=tecla.keyCode; // Identifica a tecla, caso seja backspace				valor=x.value.split(''); // Pega o valor do campo e transforma cada caractere em uma string		formatado=""; // Variável para carregar formatação temporariamente				i=0; // variável de controle				while(i<valor.length){ // Loop para cada caractere do campo			caractere=valor[i]; // Seleciona um caractere para ser formatado			numeros=/^\d+$/; // Variavel contendo números positivos				// Verifica se é número ou "barra"			if(numeros.test(caractere) || caractere==separador){ formatado+=String(caractere);}				// Verifica se precisa de barra, se a tecla for backspace, então a barra não é adicionada				// Se for para adicionar barra, aumenta ++ variável de controle "i" para pular a barra adicionada			if((formatado.length==2 || formatado.length==5) && tecla!=8){formatado+=separador; i++;}							i++; // Se houver, passa para o próximo caractere		}				x.value=formatado; // Atribui o valor formatado ao campo	}</script>

 

Obrigado.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Tiago AraujoPrimeiramente gostaria de parabeniliza-lo, pois gostei muito do seu código e estou usando-o.Porém como não sei nada de JavaScript gostaria de saber como posso incluir algo que valide a data se a mesma foi digitada corretamente.Desde já agradeço a ajudaAtenciosamenteHellxande

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hellxande,Você pode usar substr. Se você tem uma data em uma string, você pode fazer o seguinte:data.substr(posição inicial, tamanho da substring). Assim você pode comparar pra ver se o formato tá certo, usando os 10 dígitos de uma data.Espero ter ajudado. Se não conseguir fazer isso, avise que eu te passo um código depois.Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos, dá pra validar usando expressões regulares, vide abaixo.

ps. substitui o parâmetro 'x' por 'tCampo'

 

tCampo.value=formatado; // Atribui o valor formatado ao campo

//Codigo original acaba aqui 		
		if (formatado.length == 10){
			if(!formatado.match(/^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/)){
				alert('Data Inválida! - ' + tCampo.value);
				tCampo.value = '';
				tCampo.focus;
			}
	   }

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.