Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

EventListener de manter botão pressionado

Olá, estou desenvolvelvendo uma lista de compras que possui tabelas de secções e linhas dos itens a serem comprados, acontece que eu estava usando o event listener de clique para editar os campos da linha ou tabela e duplo clique para excluir. No entanto isso tornou-se um problema de interface, fazendo com que elementos dessa aplicação fossem removidas sem querer. Para isso pensei em acionar a função de deletar tabela com um evento de manter o elemento clicado. Mas não estou conseguindo usar setTimeOut para isso, poderia mostrar uma solução viável para o problema? Segue um trecho do código em questão...

// Prepara a funcionalidade de deletar as tabelas selecionadas engatilharTabelas();

function engatilharTabelas(){

var listaTabelas = document.getElementsByClassName('tabela__cabecalho-descricao');

for(var c = 0; c < listaTabelas.length; c++){

    listaTabelas[c].addEventListener("click", deletarTabela);
}

}

function deletarTabela(){ var tabela = this.parentElement.parentElement.parentElement;

tabela.remove();

}

1 resposta
solução!

Oi Henrique, tudo bem?

Nesse caso em questão, o que eu sugiro é você continuar com o evento de double click, porém, toda vez que esse evento for disparado, você mostrar um alerta perguntando se o usuário realmente deseja deletar o campo.

Dado o seu código, você pode fazer uma lógica assim:

function engatilharTabelas(){

    var listaTabelas = document.getElementsByClassName('tabela__cabecalho-descricao');

    for(var c = 0; c < listaTabelas.length; c++){
        listaTabelas[c].addEventListener("dblclick", deletarTabela);
    }
}

function deletarTabela(){

    var confirmarExclusao = confirm('Deseja deletar?');
    if(confirmarExclusao) {
        var tabela = this.parentElement.parentElement.parentElement;
        tabela.remove();
    }
}

Agora, ele irá abrir uma caixa de confirmação perguntando se deseja ou não deletar algo. Caso a resposta for sim, a variável confirmarExclusao será verdadeira e seguirá a lógica proposta dentro da condicional. Caso não, nada acontecerá.

Espero ter ajudado, bons estudos =)