Como desabilitar tecla "Backspace" de voltar página do navegador com jQuery

É bem provável que você já tenha retornado à página anterior sem querer ao editar um campo de formulário e, acidentalmente, pressionou a tecla Backspace. Às vezes, isso acontece por clicar fora do campo ou até mesmo ao pressionar a tecla Tab erroneamente. Independente da razão, quando o campo perde o foco e pressionamos a tecla Backspace, o navegador volta à página anterior e muitas vezes perdemos todo o progresso do preenchimento do formulário.

Felizmente, é possível evitar esse problema utilizando jQuery. Na verdade, existe uma solução bem simples para isso, que consiste em detectar as teclas que estão sendo pressionadas e desabilitar o uso do Backspace para essa finalidade. Vejamos o código abaixo:

// detecta todas as teclas que estão sendo pressionadas
    $(document).unbind('keydown').bind('keydown', function (event) {
    
    // filtra apenas a tecla <backspace>
    if (event.keyCode === 8) {
        
        // variável que decidirá se a tecla será bloqueada
        var doPrevent = true;
        
        // tipos de campos permitidos
        var types = ["text", "password", "file", "search", "email", "number", "date", "color", "datetime", "datetime-local", "month", "range", "search", "tel", "time", "url", "week"];
        
        var d = 	&#36;(event.srcElement || event.target);
        var disabled = d.prop("readonly") || d.prop("disabled");
        
        // checa se está nos campos permitidos e libera o <backspace> para edição
        if (!disabled) {
            if (d[0].isContentEditable) {
                doPrevent = false;
            } else if (d.is("input")) {
                var type = d.attr("type");
                if (type) {
                    type = type.toLowerCase();
                }
                if (types.indexOf(type) > -1) {
                    doPrevent = false;
                }
            } else if (d.is("textarea")) {
                doPrevent = false;
            }
        }
        
        // bloqueia a tecla
        if (doPrevent) {
            event.preventDefault();
            return false;
        }
    }
});

Com o código acima, o problema de retornar à página anterior usando a tecla Backspace será resolvido, tanto no Internet Explorer quanto no Firefox.

No caso do Chrome, existe ainda uma extensão que você pode instalar para desabilitar essa funcionalidade em todos os sites, pois fica desabilitado a nível de configuração do navegador.

Atualização (30/07/2023)

Atualmente a função de voltar a página anterior com a tecla "Backspace foi removida dos navegadores. Dessa forma, isso já não é mais uma preocupação real.


Tags:

  • jQuery
  • Formulário
  • Event
  • Tecla
  • keydown

Compartilhar:

10 Comentários

  • Foto de Arthur Ronconi
    Arthur Ronconi
    Hélio, todos os códigos e ações do plugin podem ser encontrados no próprio script do plugin. Dá uma olhada lá! =D
  • Foto de Marcelo Alexandre
    Marcelo Alexandre
    É a melhor função para validação de data em Javascript que já analisei! Parabéns!
  • Foto de Aristides
    Aristides
    SHOW
  • Foto de Anônimo
    Anônimo
    Obrigado!!!
  • Foto de Anônimo
    Anônimo
    Obrigado!
  • Foto de bretas
    bretas
    Muito bom valeu muito!!!
  • Foto de Cristiano
    Cristiano
    Meu nobre, Boa tarde! Artigo excelente e função melhor ainda. Me ajudou bastante em um dos meus projetos. Inclusive, adicionei a validação da hora, caso seja digitada. Um forte abraço!
  • Foto de Matheus Costa
    Matheus Costa
    muito massa ! sempre me perguntava o porque JS tinha Java no nome, visto que não vivi a época do Netscape Navigator
  • Foto de José Lopes
    José Lopes
    Ainda tenho duvidas entre ele e o Joomla, o WordPress parece que tem umas limitações que o Joomla não tem
  • Foto de Arthur Ronconi
    Arthur Ronconi
    Quais limitações?

O que achou do artigo?

Escreva um comentário, deixe-me saber o que achou do artigo. Se tens uma dúvida basta perguntar:

Resposta ao comentário:
Loading...