Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Inserir Tags

Ao me deparar com erro ao tentar fazer a atividade da aula de inserir tags ao projeto do curso, percebi que ao clicar em "enter" no teclado simplesmente não adicionava nada, e a tela atualizava. Logicamente algo não estava certo, e percebi um possível problema no código da aula (Aula inserir tags - modulo 03 Manipulando tags), o código JS estava assim:

...

const inputTags = document.getElementById("input-tags");
const listaTags = document.getElementById("lista-tags");

inputTags.addEventListener("keypress", (evento) => {
if (evento.key === "Enter") {
evento.preventDefault();
const tagTexto = inputTags.value.trim();
if (tagTexto !== "") {
const tagNova = document.createElement("li");
tagNova.innerHTML = <p>${tagTexto}</p> <img src="./img/close-black.svg" class="remove-tag">
listaTags.appendChild(tagNova);
inputTags.value = "";
}
}
})

E ao usar uma IA para me ajudar a encontrar possíveis erros, o Gemini me apontou duas coisas importantes:

1 - o evento padrão de um formulario ao apertar enter no teclado é justamente de submeter o mesmo e atualizar a tela, por isso o evento.preventDefault(). Mas segundo a IA, esse método não estava ocorrendo a tempo, ao realizar o evento Keypress e posteriormente evitar o comportamento padrão. A sugestão foi substituir "keypress" por "keydown", pois segundo a sugestão, este parâmetro impede isso.

2 - Trocar const listaTags = document.getElementById("lista-tags"); por
const listaTags = document.querySelector(".lista-tags");
Isto é necessário pois ao analisar o HTML, na linha 79, o elemento "ul" está usando uma "class" e não um "id"

Funciounou ! Apesar de saber os riscos envolvidos em usar ferramentas de IA como o copilot e gemini, neste caso especifico, foi a forma mais eficiente de achar o erro, aprender outras coisas valiosas (quando usar keypress, keydown, keyup...) e prosseguir com as aulas.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
2 respostas
solução!

Olá Marco! Tudo bem?

Que bom que você conseguiu resolver o problema com a ajuda da IA! Realmente, a troca do evento de "keypress" para "keydown" é uma ótima solução para garantir que o evento.preventDefault() seja executado a tempo de evitar o comportamento padrão de submissão do formulário. Além disso, a correção do seletor para document.querySelector(".lista-tags") foi uma boa sacada, já que o elemento estava usando uma classe e não um ID.

Aproveite essa experiência para explorar mais sobre eventos de teclado em JavaScript, como "keyup" e "keydown", pois eles podem ser muito úteis em diferentes situações.

Obrigada por compartilhar o que aprendeu com a nossa comunidade :)

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Em tempo: ao pesquisar melhor sobre os eventos relacionados ao teclado - Keypress, Keydown e Keyup, cheguei a uma pagina MDN que informa (na parte vermelha do artigo) que o Keypress é considerado "obsoleto" , conforme texto a seguir:

Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

Isso mostra que trabalhar com programação requer uma atenção constante a mudanças - um recurso pode cair em desuso sem que possamos perceber, e impactar nossas aplicações.

Segue link do referido texto na integra -> https://developer.mozilla.org/en-US/docs/Web/API/Element/keypress_event