Quiero no permitir que un usuario ingrese ningún número en un campo de texto, ¿cómo puedo hacer que esto funcione con js? Estoy tratando de reemplazar los números con expresiones regulares pero no parece funcionar
const selectElement = document.querySelector('.ice-cream'); selectElement.addEventListener('change', (event) => { const result = document.querySelector('.result'); let temp = event.target.value.replace(/[^0-9]/g, ''); result.textContent = `${temp}`; }); <input type="text" class="ice-cream"> <p class="result"> </p>yo tambien he probado esto
const selectElement = document.querySelector('.ice-cream'); selectElement.addEventListener('change', (event) => { const result = document.querySelector('.result'); let pattern = new RegExp(/[AZ]/i); if(pattern.test(event.target.value)) { result.textContent = `${event.target.value}`; } else return; });Parece que no permite ningún número al principio, pero cuando ingreso un texto y luego un número, lo permite cuando no debería. ¿Alguien puede darme un consejo?
Debe invertir su patrón de expresiones regulares a [0-9] sin el ^ , porque eso coincide con cualquier cosa que no sea un dígito.
Además, es posible que también desee considerar reemplazar el valor del elemento de entrada.
const selectElement = document.querySelector('.ice-cream'); selectElement.addEventListener('input', (event) => { const result = document.querySelector('.result'); event.target.value = event.target.value.replace(/[0-9]/g, ''); result.textContent = event.target.value; }); <input type="text" class="ice-cream"> <p class="result"> </p>Agregue un detector de eventos de 'keydown' que verifique si el nuevo carácter es un número o algo más. Esto no permitirá que el número se escriba nunca en lugar de reemplazarlo después.
var input = document.querySelector('input'); input.addEventListener('keydown', e => { if (e.key >= '0' && e.key <= '9') { e.preventDefault(); } }¿Quizás quieras algo como esto?
Esto cambia el valor de <input> , reemplazando cualquier número insertado por el usuario.
Además, la expresión regular estaba casi en el punto, solo necesitaba eliminar el ^ , ya que solo coincide con los dígitos al comienzo de la cadena.
const selectElement = document.querySelector('.ice-cream'); selectElement.addEventListener('input', (event) => { selectElement.value = selectElement.value.replace(/[0-9]/g, ''); }); <input type="text" class="ice-cream">