CG
Chamar função PHP em evento onkeypress em JavaScript
Alguém já precisou chamar uma função de uma classe usando onkeypress do javascript?
Preciso que ele fique executando uma verificação a cada tecla pressionada no campo, esta verificação é feita por uma função na classe do formulário.
Estou tentando fazer desta maneira:
Já setei o ID do formulário mas ele não executa a função, na verdade ele não executa nada quando pressiono, alguém sabe como resolver?
Preciso que ele fique executando uma verificação a cada tecla pressionada no campo, esta verificação é feita por uma função na classe do formulário.
Estou tentando fazer desta maneira:
- <?php
- $js = 'document.getElementById("password").onkeypress = function() { engine.php?class=LoginForm&method=MyFunction
- };';
- TScript::create($js)
- ?>
Já setei o ID do formulário mas ele não executa a função, na verdade ele não executa nada quando pressiono, alguém sabe como resolver?
ac
Muitas funções do framework tem similares em JavaScript.
Dê uma olhada no funcionamento da função PHP e veja se pode chamar algo em JS diretamente.
Uma outra forma e usar jQuery para chamar um script PHP e executar o que você precisa.
Mas, sugiro que informe melhor o contexto e a sua necessidade, pois, provavelmente existe alguma coisa para cercar isso.
Espero ter ajudado.
Obrigado Americo Carvalho pela resposta, mas receio que o que você escreveu é exatamente o que eu postei como dúvida.
Preciso executar uma função que está numa classe em PHP a cada tecla digitada em um campo do formulário.
E a princípio até o presente momento, não há um método nos componentes TEntry ou TPassword que é equivalente ao onkeypress do javascript (fica a sugestão) então é necessário executar um script para resolver, o detalhe é que não consegui fazer funcionar ainda, olhei alguns exemplos para testar, mas ainda não consegui.
A ideia é assim:
Eu estou usando o método setExitAction para chamar a função quando sai o foco do componente, mas para ficar melhor preciso que execute a função enquanto a pessoa digita!
Desde já agradeço!
Use a função do adianti mesmo para executar metodos no servidor (PHP)
__adianti_ajax_exec < basta informar class=SuaClass&method=seu_metodo_estatico¶metros_adicionais=alguma_coisa
Exemplo:
OBS: o metodo deve ser estatico
Exemplo:
Obrigado William!
Clareou bastante aqui, mas ainda não funcionou!
Da maneira que você colocou ele continua não chamando a função da classe, mas eu fiz desse jeito então:
Desse jeito ele imprime o "aa" sem eu ter pressionado nenhuma tecla, como se executasse sozinho no formulário, mas pelo menos ele chamou a função do PHP.
O que é curioso é que me parece que executa somente uma vez, não consigo saber se está executando.
Daí uma outra dúvida, como posso pegar os caracteres que estão sendo digitados nos formulários e enviar para esse método que é chamado no onkeypress?
Como o formulário está vazio, obviamente eu preciso a cada tecla pressionada pegar o que está sendo digitado nos campos e enviar para o método que preciso, como são 2 campos eu tentei criar um vetor em javascript assim:
Porém fica sempre em branco os valores dos campos.. não sei se é assim que se pega os valores dos campos também.
Alguém poderia dar uma ajuda?
Obrigado
Olá Carlos. Tenta assim:
Boa noite Ivan!
Muito obrigado pela resposta!!
Eu estava explorando o keyup para ver como implementar, mas não funcionou!
Copiei exatamente como você postou e ainda nada.. até dei uns "escape" nas aspas pra ver se era isso:
Mas não.. olhei o html que gerou pra ver se por acaso tinha gerado algo errado:
Mas parece que o script está correto mas não aparece o resultado na tela.
O que será que estou esquecendo??
Desde já muito obrigado pela ajuda!!
O forum tirou os "escapes" mas tem:
Vamos ver se agora os escapes aparecem!
Vc setou os Ids dos campos?
Talvez o echo não esteja imprimindo na function, faça uma alteração usando o TMessage para testar a saída:
Com certeza!
Tanto o TEntry e o TPassword tem o método setId.
Carlos, o id do password deve ser atribuido assim:
Não sei o porque , mas atribuindo com setId(), o TPassword não acata. É só dar uma olhada no código HTML gerado.
Verdade Ivan.. eu olhei o seu código e pensei .."ele digitou errado".. e mantive o setId.. mas quando coloquei da sua forma.. ele chama o método e apareceu algumas coisas.
( ! ) Fatal error: Uncaught exception 'ReflectionException' with message 'Method LoginForm::onExitUser=444() does not exist' in E:wampwwwgecon5libadianticoreAdiantiCoreApplication.php on line 46
( ! ) ReflectionException: Method LoginForm::onExitUser=444() does not exist in E:wampwwwgecon5libadianticoreAdiantiCoreApplication.php on line 46
Estou usando o método para popular um TCombo..está funcionando porque estou chamando ele pelo setExitAction do TPassword.. mas queria que executasse toda vez que a pessoa ficasse digitando.
Eu digito o login: 444 e quando passo pro campo password e digito qualquer tecla.. aparece a mensagem acima.. mas já é alguma coisa o método está chamando, você sabe o que é esse erro?
Muito obrigado pela ajuda Ivan!
Ivan.. testei novamente.. era os meus "escapes".. removi eles e funcionou que é uma beleza!
Cara.. muito obrigado!
Era isso mesmo que precisava!!
Vou postar novamente aqui o código para alguém que precise disso um dia:
Obrigado mais uma vez!!!! :)))
Vlw, qualquer coisa estamos aqui. Abraço