Executar função ao pressionar ENTER (Não JQuery)

Eu preciso executar uma função com parâmetros ao pressionar ENTER. Eu tenho uma textarea e um botão em PHP, o textarea e o botão recebem variáveis para id, e NÃO estão dentro de um form.

<?php 
$id= 1; $usuario="Renato";
$box ='<textarea id="'.$id.'" placeholder="Escreve uma mensagem..."></textarea><br />
<button id="'.$rb.'" onclick="responder('.$id.',\''.$usuario.'\')">Responder</button>
'';
?>

Eu preciso executar a Function responder(id,usuer) {alert(id);alert(user);} ao pressionar ENETR e apenas se a textarea estiver focada… Não estou conseguindo fazer, usei onkeyup na textarea já sabendo que a função seria executada ao teclar qualquer “KEY” do teclado, foi só para um teste…

Achei essa pequena função em um site que identificar que a tecla ENTER foi pressionada, mas não sei como acionar minha função passando parâmetros por ela apenas se a textarea estive em Foco… Se eu Teclar ENTER a qualquer momento ele executa o alert.

<script type="text/javascript">
document.addEventListener('keydown', function (event) {
    if (event.keyCode !== 13) return;
    alert(event.keyCode);
});
</script>

Sou iniciante em JS mas acredito que seja:

<script type="text/javascript">
document.addEventListener('keydown', function (event) {
    if (event.keyCode == 13){
     funcaoAqui(parametro1,parametro2,parametro3 etc.);
    }
});
</script>

E lembrando que voce estaria invocando a funcão dentro do evento de pressionar a key, mas a funcão em si tem que tar fora do event., ou pode fazer tudo dentro mas meu chefe me recomenda não fazer assim , pois n é uma boa pratica.

Desculpa se respondi algo errado =)

1 curtida

Tentei colocar a função dentro do condicional IF mas não deu certo.
A ideia é, ao pressionar ENTER, executar a função somente se a textarea estiver com o FOCO, sem a necessidade de um FORM.
Agradeço assim mesmo, continuo tentando!!!

Fiz um codigo simples. Acho que ficaria da seguinte forma:

<textarea id="texto"/>

<script>
var texto = document.getElementById("texto");
texto.addEventListener("focus", function() {
    texto.addEventListener('keydown', function (event) {
        if (event.keyCode == 13){
            alert(event.keyCode);
        }
    });
});
</script>

Meio que deu erro, quando pressiono ENTER, ele cria um pequeno Loop e aparece o alert simultaneamente, outro problema, é que se eu colocar minha função dentro do segundo if, ele gera um erro…Continuo tentando aqui!!! Obrigado também

var texto = document.getElementById("texto");
texto.addEventListener("focus", function() {
    texto.addEventListener('keydown', function (event) {
        if (event.keyCode == 13){
            alert('teste');
        }
    });
});

Esse codigo acima da erro pra voce? O correto é ir testando parte por parte… não vejo esses 2 IF que vc menciona.

Testei aqui e funciono… no input quando vc da um FOCUS nele e ai aperta o ENTER ele escreve no console log teste.

Manda o codigo que vc ta usando… fica mais facil

Foi mal, é que eu considerei a linha texto.addEventListener(“focus”, function() { } com um IF por causa FOCUS e da CHAVES :stuck_out_tongue: , furada minha!!

Meu código segue abaixo
Esss bloco PHP passa o ID da textarea e do Botão, quando eu clico no botão ele executa a função responder com os parâmetros dentro do onclick, ok?
O que eu preciso é, executar a mesma função ao tecla ENTER após digitar na textarea

O problema que deu neste código foi esse: Quando eu teclo ENTER com a textarea focada, ele fica dando alert sem parar, e quando coloco minha função dentro, ele a função não executa e pula uma linha no textarea!

<?php $id= 1; $usuario="Renato"; $box ='
Responder ''; ?>

Será que ficou claro? a função de pressionar o Botão deve ser igual a Função de Pressionar ENTER com os mesmos parâmetros

Mas cade o codigo JS? esse ai é PHP.

Agora que falou, eu percebi que os códigos que eu adicionei sumiram, mas sem problemas…

Eu consegui realizar o que precisava, troquei a textarea por um input dentro de um FORM e deu certo, agora eu posso Pressionar ENTER que ele executa a função na boa, ou pressionar o Botão, mas gostaria que funcionasse com um textarea dentro do FORM, porém ela não é como o input…não consegui…

Agradeço muito sua intenção em ajudar, tenho muitas outras dúvidas por vir, mas por enquanto, paro por aqui… valeu mesmo Alexis, tudo de bom!!!

1 curtida

Beleza desculpa não ter ajudado mais. Infelizmente não sou expert em JS =/

Sem problemas, o mais importante é a atenção!! :smiley:

Alexis, eu tive que voltar pra esse tópico e falar que eu conseguir executar meu código com esta maneira, estudando um pouco sobre o Listener consegui abrir mais o meu conhecimento nele…

Valeu mesmo pela ajuda!!! :smiley: