Space Lock with REGEX

Asked

Viewed 268 times

3

My code for locking characters is like this:

 $('#rg').on('keypress', function() {
      var regex = new RegExp("^[ 0-9]+$");
      var _this = this;
      // Curta pausa para esperar colar para completar
      setTimeout( function(){
          var texto = $(_this).val();
          if(!regex.test(texto))
          {
              $(_this).val(texto.substring(0, (texto.length-1)))
          }
      }, 100);
  });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='rg'/>

How do I block SPACE .

Incorrect Example

116 416

You should stay

116416

2 answers

1

The problem is the space of your regex. should be like this : RegExp("^[0-9]+$").

Example:

 $('#rg').on('keypress', function() {
   var regex = new RegExp("^[0-9]+$");
   var _this = this;
   // Curta pausa para esperar colar para completar
   setTimeout(function() {
     var texto = $(_this).val();
     if (!regex.test(texto)) {
       $(_this).val(texto.substring(0, (texto.length - 1)))
     }
   }, 100);
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<input type="text" id="rg">

1


Your REGEX is almost right, as you only want digits, just remove the space from the REGEX that will work.

new RegExp("^[0-9]*$")

See example working:

$('#rg').on('keypress', function() {
  var regex = new RegExp("^[0-9]*$");
  var _this = this;
  setTimeout(function() {
    var texto = $(_this).val();
    if (!regex.test(texto)) {
      $(_this).val(texto.substring(0, (texto.length - 1)))
    }
  }, 100);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='rg' />

  • Thank you, it worked perfectly.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.