Ir para conteúdo

POWERED BY:

Arquivado

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

Martinsrj

[Resolvido] Dificuldade em utilizar o evento onkeypress

Recommended Posts

Olá pessoal, boa tarde!

Estou com dificuldade em utiliza um função de formatação de data no evento onkeypress.

Consigo fazer funcionar estatico dessa forma:

<label id="txtDtDespesa0" for="txtDtDespesa0" class="label">Data da Despesa</label><br />
	<input class="input" type="text" lang="1" title="" maxlength="10" size="10" name="txtDtDespesa0" id="txtDtDespesa0" value="" onFocus="mudarCorCampo(this,'white')" onkeypress="return(FormatarData(this,event))" />
Porem necessito que funcione nesse codigo também:

  var textDtDespesa = document.createTextNode("Data Despesa");
  var fontDtDespesa = document.createElement("label");
  
  var quebraDtDespesa = document.createElement('BR');
  var el = document.createElement('input');
  var quebra = document.createElement('BR');
  el.type = 'text';
  el.name = 'txtDtDespesa' + var_txtCont.value;
  el.id = 'txtDtDespesa' + var_txtCont.value;
  el.size = 10;
  
  //el.onkeypress = keyPressTest;
  el.onkeypress = FormatarData;

  fontDtDespesa.appendChild(textDtDespesa); 
  cellRightSel.appendChild(fontDtDespesa); 
  cellRightSel.appendChild(quebraDtDespesa);
  cellRightSel.appendChild(el);
  cellRightSel.appendChild(quebra);

Abaixo é a função:

// Script para formatar datas
function FormatarData(campo,e) {
	var cod=0;
	if(document.all) {
		cod=event.keyCode;
	} else {
		cod=e.which;
	}
	if(cod == 08 || cod == 0) 
		return;
	if (cod < 48 || cod > 57) {
		if ((cod < 45 || cod > 57) && (cod != 13) ) alert("Digite somente Caracteres Numéricos!");
			cod=0;
			campo.focus(); return false;
	}
	tam=campo.value.length;
	if(tam > 9) 
		return false;
	var caract = String.fromCharCode(cod);
	if(tam == 2 || tam == 5) {
		campo.value+="/"+caract;
		return false;
	}
	campo.value+=caract;
	return false;
}

Onde que eu estou errando?

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sua máscara, é meio estranha... tenho uma com ER que acho melhorzinha aqui:

exemplo:

<html>
<head>
<script type="text/javascript">
window.onload = function()
{
	var el = document.createElement('input');

	el.type = 'text';
	el.name = 'txtDtDespesa';
	el.id = 'txtDtDespesa';
	el.size = 10;
	el.setAttribute('maxlength' , '10');
	
	el.onkeypress = function( event )
	{
		mascara( this, mdata );
		//FormatarData( this, event );
	}
	document.body.appendChild( el );
}
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;
}
</script>
</head>
<body>
   
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Thiago, boa noite!

você teria como dar um exemplo como utilizar o windows.onload.

Onde que eu devo utilizar esse código: el.onkeypress = FormatarData;

Não estou sabendo incluir o código (el.onkeypress = FormatarData;) e fazer a chamada atraves do onload.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem onload. Não tem pq.. você cria o elemento após.

é só fazer como demonstrei:

 

em vez de:

el.onkeypress = FormatarData;
usar:

el.onkeypress = function( event )
        {
                mascara( this, mdata );//caso queria a minha máscara com ER
                //FormatarData( this, event );//caso resolva usar a sua máscara
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá William, bom dia!

 

A formatação funcionou direitinho, porem ao tentar digitar apenas numero 30042010 ele ficou assim: 33/00/2200

Reparei ao clicar em um numero ele duplica. Exemplo: se eu digitar apenas o numero 3 aparece no input 33

O que pode ser isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está usando ?

era pra usar UMA função OU outra, e não as duas.. por isso comentei a tua..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora funcionou:

//el.onkeypress = keyPressTest;
  el.onkeypress = function( event )
  {                
	//FormatarData( this, event );
	return(FormatarData(this,event))
  }

Obrigado William, abraços.

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.