Ir para conteúdo

POWERED BY:

Arquivado

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

mendofh

[Resolvido] Verificar data com mascara

Recommended Posts

Bom dia estou tentando criar uma verificador de data dentro do uma função que tenho para mascara, porem estou tendo problemas e nao consigo fazer que funcione os 2 ao mesmo tempo.

Se alguem poder me ajudar eu agradeço

 

Uso essa mascara.

function mascara(o,f){
v_obj=o
v_fun=f
setTimeout("execmascara()",1)
}
function execmascara(){
v_obj.value=v_fun(v_obj.value)
}
function mcep(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
return v
}
function mtel(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca hífen entre o quarto e o quinto dígitos
return v
}
function cnpj(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/^(\d{2})(\d)/,"$1.$2") //Coloca ponto entre o segundo e o terceiro dígitos
v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
v=v.replace(/\.(\d{3})(\d)/,".$1/$2") //Coloca uma barra entre o oitavo e o nono dígitos
v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca um hífen depois do bloco de quatro dígitos
return v
}
function mcpf(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/(\d{3})(\d)/,"$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos
v=v.replace(/(\d{3})(\d)/,"$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos
//de novo (para o segundo bloco de números)
v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
return v
}
function mdata(v){
v=v.replace(/\D/g,""); //Remove tudo o que não é dígito
v=v.replace(/(\d{2})(\d)/,"$1/$2"); 
v=v.replace(/(\d{2})(\d)/,"$1/$2"); 

v=v.replace(/(\d{2})(\d{2})$/,"$1$2");
return v;
}
function mhora(v){
v=v.replace(/\D/g,""); //Remove tudo o que não é dígito
v=v.replace(/(\d{2})(\d)/,"$1h$2"); 

return v;
}
function mtempo(v){
v=v.replace(/\D/g,""); //Remove tudo o que não é dígito
v=v.replace(/(\d{1})(\d{2})/,"$1:$2"); 
v=v.replace(/(\d{2})(\d{2})/,"$1.$2"); 

return v;
}
function mrg(v){
v=v.replace(/\D/g,""); //Remove tudo o que não é dígito
v=v.replace(/(\d)(\d{7})$/,"$1.$2"); //Coloca o . antes dos últimos 3 dígitos, e antes do verificador
v=v.replace(/(\d)(\d{4})$/,"$1.$2"); //Coloca o . antes dos últimos 3 dígitos, e antes do verificador
v=v.replace(/(\d)(\d)$/,"$1-$2"); //Coloca o - antes do último dígito
return v;
}
function mnum(v){
v=v.replace(/\D/g,""); //Remove tudo o que não é dígito

return v;
}

Chamo ela assim no html:

<td><input type="text" name="nascimento" id="nascimento" maxlength="10" onkeypress="mascara(this, mdata)" value="<?php echo $nascimento ?>"> </td>

Queria fazer que quando eu tirar o foco desse text ele me retorne se a data é valida ou não. se for valida dexa como esta e se nao for valida apague o campo Nascimento e coloque o focus nele.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E quais são os seus parâmetros base, digo, qual é a lógica do sistema para saber se uma data é valida ou não? Para pegar partes da data você pode usar o método sort().

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

desculpa nao entendi, estou aprendendo a criar sites agora e precisava validar a data.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Direto do Laboratório de Scripts

http://forum.imasters.com.br/index.php?/topic/222133-mascara-e-validacao-de-cpfcnpjcepdatatelefone/

 

Fiz uma pequena adaptação:

<script type="text/javascript">
function mascara(o,f){
	v_obj=o
	v_fun=f
	setTimeout("execmascara()",1)
}
function execmascara(){
	v_obj.value=v_fun(v_obj.value)
}
function mdata(v){
	v=v.replace(/\D/g,""); //Remove tudo o que não é dígito
	v=v.replace(/(\d{2})(\d)/,"$1/$2"); 
	v=v.replace(/(\d{2})(\d)/,"$1/$2"); 

	v=v.replace(/(\d{2})(\d{2})$/,"$1$2");
	return v;
}
function validaData( data )
{
	if (!(data.match(/^[0-9]{2}[\/-]{1}[0-9]{2}[\/-]{1}[0-9]{4}$/))) {
		return false;
	}

	var dia = parseInt(data.substr(0,2));
	var mes = parseInt(data.substr(3,2));
	var ano = parseInt(data.substr(6,4));
	
	if ((mes < 1) || (mes > 12)) {
		return false;
	}
	if ((dia < 1) || (dia > 31)){
		return false;
	}
	if ((mes == 2) || (mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)) {
		if (dia > 30) {
			return false;
		}
		if (mes == 2) {
			if (ano % 4 == 0) {
				if (dia > 29) {
					return false;
				}
			}
			else {
				if (dia > 28) {
					return false;
				}
			}
		}
	}
	return true;
}
function aData( data )
{
	if( !validaData(data) )
		alert('Data inválida');
	else alert('OKAY!'); //se não quiser o OKAY comente essa linha
}
</script>

 <td><input type="text" name="nascimento" id="nascimento" maxlength="10" onkeypress="mascara(this, mdata)" value="<?php echo $nascimento ?>" onblur="aData( this.value )" /> </td>

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.