Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
Javascript Regex input text letters and numbers only

I'm using this script to only allow my input text letters and numbers

function setInputFilter(textbox, inputFilter) {
["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
       textbox.addEventListener(event, function() {
              if (inputFilter(this.value)) {
                this.oldValue = this.value;
                this.oldSelectionStart = this.selectionStart;
                this.oldSelectionEnd = this.selectionEnd;
                console.log("If 1");
              } else if (this.hasOwnProperty("oldValue")) {
                this.value = this.oldValue;
                this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
                console.log("if 2");
              } else {
                  console.log("if 3");
                this.value = "";
              }
            });
          });
    }
    
    setInputFilter(document.getElementById("frm_nuevo_proveedor:j_idt35"), function(value) {
          return /^[^\W_]+$/i.test(value); 
    });

My problem is that once I type the first value it doesn't let me erase it anymore

Example

So the first value won't let me delete it.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

When you attempt to remove the last character, the RegExp returns false because it is not set to accept blank strings. This causes the script to restore the oldValue, which would be that single letter.

The simplest fix seems to be updating the RegExp used as the filter. This should work for you, though I'm no expert on regular expressions so there may be a better way:

setInputFilter(document.getElementById("testEl"), function(value) {
  return /(^$|^[^\W_]+$)/i.test(value);
});
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda