Creo que hay una solución mas sencilla para este caso, podrías realizar la validación en el evento oninput
verificando si el texto contiene números en ese caso solo tendrías que eliminarlos del valor del input:
const validar = function(campo) { let valor = campo.value; // Verifica si el valor del campo (input) contiene numeros. if(/\d/.test(valor)) { /* * Remueve los numeros que contiene el valor y lo establece * en el valor del campo (input). */ campo.value = valor.replace(/\d/g,''); }};
<input oninput="validar(this)" type="text"/>