Ir para conteúdo

Arquivado

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

Inside

Somente números em campo com máscara de data

Recommended Posts

Caros amigos,

 

 

achei esta máscara para data, implementei mas o que acontece, o usuário cola assim ou xx/xx/xxxx.

 

Há alguma maneira para impedir o uso de letras e deixar só números?

 

Segue a função:

function formatar_data(campo,mensagem_erro){
	comprimento = campo.value.length;
	if (comprimento >10){
		campo.value = campo.value.substr(0,10);
		return; 
	}
	
	if ((campo.value.charCodeAt(comprimento-1) < 48 || campo.value.charCodeAt(comprimento-1) > 57) && campo.value.charAt(comprimento-1)!="/" || comprimento>10){
		campo.value = campo.value.substr(0,comprimento-1);
		return;
	}
	if (comprimento==1) return;
		
	primeira_barra=ultima_barra=0;
	tecla = campo.value.charAt(comprimento-1);
	primeira_barra = campo.value.indexOf("/");
	ultima_barra = campo.value.lastIndexOf("/");
	
	if (comprimento==2 && primeira_barra<0) campo.value += "/";
	if (comprimento==5 && ultima_barra == primeira_barra) campo.value += "/";
	
	if (tecla=="/"){
		if (campo.value.charAt(comprimento-2)=="/") campo.value = campo.value.substr(0,comprimento-1);
		if (ultima_barra==primeira_barra){
			if (parseInt(campo.value.substr(0,comprimento-1))<10) campo.value = "0" + parseInt(campo.value.substr(0,comprimento-1)) + "/";
		} else {
			if (parseInt(campo.value.substr(primeira_barra+1,ultima_barra-1))<10){
				if (campo.value.charAt(primeira_barra+1)=="0"){
					posicao_parseInt = primeira_barra+2
				} else {
					posicao_parseInt = primeira_barra+1
				}
				campo.value = campo.value.substr(0,primeira_barra) + "/0" + parseInt(campo.value.substr(posicao_parseInt,ultima_barra-1)) + "/";
			}
		}		
	}	
}

Obrigado pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual seria essa expressão para regular?

 

Eu achei para números que é a que está abaixo, mas como coloco as 2 barras junto?

/^\s*\d+\s*$/

Compartilhar este post


Link para o post
Compartilhar em outros sites

em jsp uso:

function Formatadata(Campo, teclapres){
	var tecla = teclapres.keyCode;
	var vr = new String(Campo.value);
	vr = vr.replace("/", "");
	vr = vr.replace("/", "");
	vr = vr.replace("/", "");
	tam = vr.length + 1;
	if (tecla != 8 && tecla != 8){
		if (tam > 0 && tam < 2)
			Campo.value = vr.substr(0, 2) ;
			if (tam > 2 && tam < 4)
				Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2);
				if (tam > 4 && tam < 7)
					Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 7);
	}
}

no campo coloco:

onkeyup="Formatadata(this,event)"

Compartilhar este post


Link para o post
Compartilhar em outros sites
// apenas números
function onlyNumber( event ){
var key = event.which || event.keyCode;
     if( key != 8 && isNaN( String.fromCharCode( key ) ) ){
	event.preventDefault();
     }
}

use:

<input type="text" name="data" onkeypress="onlyNumber(event);" onkeyup="formatar_data(this);" style="text-align:right"/>

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.