Ir para conteúdo

POWERED BY:

Arquivado

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

Júlio Pradera

[Resolvido] Utilizar event em uma função

Recommended Posts

Boa tarde a todos.

 

Eu tenho uma function com a seguinte linha de comando:

objeto.onkeypress = function() { return campoData(this, event); };

Sendo objeto o campo onde a data será escrita e campoData a function que seria chamada.

 

O meu problema é que esse código não está funcionando.

Se eu substituir o event por qualquer outra coisa, ele chama a função sem nenhum problema.

Só que eu preciso saber qual foi a tecla pressionada para poder filtra-la na function campoData.

 

Por um acaso alguém teria um solução para o meu problema?

 

 

 

P.S.: Preciso que o código funcione em todos os navegadores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me mostre sua função

campoData

----------

dexa pra lá a questão é outra

----------

event.keyCode

 

 

function tecla(){
   window.alert("O código da tecla pressionada foi: " + event.keyCode);
}

fonte:

Leia mais em: JavaScript: obtendo tecla pressionada http://www.devmedia.com.br/javascript-obtendo-tecla-pressionada/16486#ixzz27WKx5JHV

 

Tryit Editor w3s

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onkeypress

Compartilhar este post


Link para o post
Compartilhar em outros sites

event.keyCode

 

 

function tecla(){
   window.alert("O código da tecla pressionada foi: " + event.keyCode);
}

Infelizmente, essa função não funcionou em absolutamente nenhum dos navegadores testados.

Mas agradeço a ajuda.

 

Se alguém quiser, eu posso disponibilizar o código todo.

Ele é um código genérico, podendo ser chamado em qualquer input text, com qualquer name, através de um onFocus ou onClick, que tem as seguintes funções:

  • Adicionar um maxlength ao campo, para que não passe do tamanho padrão de data;

  • Adicionar uma function onBlur que valida a data, também considerando os anos bissextos;

  • Adicionar uma function onKeyPress (minha dor de cabeça) que permite somente a inclusão de caracteres alfanuméricos e gera uma mascara de data.

Como podem imaginar, ele ficou um pouco grande e por isso ainda não o coloquei aqui.

Mas, se quiserem dar uma olhada nele todo, assim posso fazer.

 

Seja como for, ele continua não funcionando e eu continuo as cegas. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também já pensei em utilizar jQuery ou mesmo HTML5 mas, como é para ser o utilizado por várias pessoas no meu trabalho, o controle não é unicamente meu.

Quanto mais simples e comum a rotina diária deles, melhor.

E, nesse caso, o mais simples seria coloca um function na biblioteca *.js, que todos já utilizam, e buscá-la por uma chamada simples, como um onFocus.

Em outras circunstancias, o problema já teria sido resolvido a muito tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

credo véio nego num sabe nem usa um framework simples e ta ganhando dinheiro e eu aqui sem 1 real no bolso com essa p****...

 

Utiliza expressão regular então mas seu trabalho vai ser maior e a interpretação mais complicada...

function verificaOcorrenciaDeCaracteresAlfabeticos(element){
   var patt=/[a-z]/i; //define pattern a ser útilizado pela expressão
   return patt.test(element.value); //retorna verdadeiro se ouver ocorrencia de algum char alfabetico
}

e pro ae vai...

 

Pequena pesquisa no google...

 

mascaras de data com js:

http://maozinhadaweb.blogspot.com.br/2007/05/mscara-de-data-com-javascript_14.html

http://codigofonte.uol.com.br/codigo/js-dhtml/formulario/funcao-para-formatacao-de-mascara-generica

http://www.htmlstaff.org/ver.php?id=18520

Compartilhar este post


Link para o post
Compartilhar em outros sites

credo véio nego num sabe nem usa um framework simples e ta ganhando dinheiro e eu aqui sem 1 real no bolso com essa p****...

Vai por mim, você ainda não sabe da missa a metade. :)

 

 

Consegui resolve esse problema.

Apenas adicionei o event na function passando de:

objeto.onkeypress = function() { return campoData(this, event); };

Para:

objeto.onkeypress = function(event) { return campoData(this, event); };

 

No entanto, agora me deparei com outro problema que está ocorrendo somente no IE.

Dentro da function tem a seguinte linha:

var nTecla = (evtKeyPress.which) ? evtKeyPress.which : evtKeyPress.keyCode;

E, por algum motivo que eu ainda não consegui entender (talvez pela hora e/ou pela quantidade de tempo que eu estou trabalhando nesse script por causa daquele erro ridículo dry.gif), o IE não está passando dessa linha.

 

Eu comentei a linha e setei o valor de nTecla na mão.

A resto da function foi executada sem mais erros.

Só que essa é justamente a linha que me retorna qual a tecla que foi pressionada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o evtKeyPress.which só funciona do IE9 em diante...

 

window.event para ie8 ou inferior

 

var x;
if(window.event) // IE8 and earlier
{
x=event.keyCode;
}
else if(event.which) // IE9/Firefox/Chrome/Opera/Safari
{
x=event.which;
}

 

 

var nTecla = (window.event) ? evtKeyPress.keyCode : evtKeyPress.which;

 

qué me manda uns free não?

 

utilizo symfony2.1 ou zendramework 1 ou 2 server side

dojo/jQuery client side

Compartilhar este post


Link para o post
Compartilhar em outros sites

var nTecla = (window.event) ? evtKeyPress.keyCode : evtKeyPress.which;

 

Tentei usar window.event mas continua não funcionando no IE8.

Mas amanhã, quando chegar no trabalho, eu continuo vendo isso.

É melhor testar em IE para Linux do que dormir sobre o teclado. :lol:

 

Se mais alguém tiver outra solução, sou todo ouvidos... ou olhos... enfim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Júlio Pradera muitas vezes o IE8 sabe que voce está desenvolvendo e joga o IE para o nivel mais baixo possivel para que a aplicação rode em todos os IEs

 

não sei se isso q to falando é verdade mas aconteceu comigo uma vez de não rodar local e rodar pela web uma vez usando IE..

ams como disse não posso confirma se o erro foi esse mesmo pois eu tinha mexido em tanta coisa q nem sei oq eu fiz..

 

 

aperte f12 no IE vai aparece uma espécie de console do IE

na parte superior desse console terá um menu e no final desse menu 2 itens

browser mode e document mode selecione a ultima opção nesses 2 itens q são propriedades padrão para "produção" do browser utilizado, isso levando minha afirmação incerta em consideração...

 

Recomendo que faça o teste pela internet de outro computador com o mesmo browser para ter certeza de que oque estou falando é verdade.

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.