sábado, 21 de febrero de 2015

Validar entrada de numeros enteros y decimales en javascript

Para números decimales por ejemplo 22.33   y  .44  , sólo acepta números y un punto
function onKeyDecimal(e,thix) {
        var keynum = window.event ? window.event.keyCode : e.which;
        if (document.getElementById(thix.id).value.indexOf('.') != -1 && keynum == 46)
            return false;
        if ((keynum == 8 || keynum == 48 || keynum == 46))
            return true;
        if (keynum <= 47 || keynum >= 58) return false;
        return /\d/.test(String.fromCharCode(keynum));
    }

Para validar número enteros, es decir sin puntos el siguiente método que sólo acepta números

function justNumbers(e) {
            var keynum = window.event ? window.event.keyCode : e.which;
            if ((keynum == 8 || keynum == 48))
                return true;
            if (keynum <= 47 || keynum >= 58) return false;
            return /\d/.test(String.fromCharCode(keynum));
        }

Para utilizarlos agrega el  evento keyprees a tu  caja de texto

<asp:TextBox ID="txtTalla"    MaxLength="3"  onkeypress="return justNumbers(event);" runat="server"></asp:TextBox>

Noten como  en el evento que validar los números decimales se requiere de el  parámetros this que nos ayuda a conocer el contenido  de la caja de texto

<asp:TextBox ID="txtPrecioCompra" onkeypress="return onKeyDecimal(event,this);" Width="80px"   MaxLength="8" runat="server"></asp:TextBox>

10 comentarios:

  1. Excelente Funciono como esperaba Gracias por el aporte

    ResponderBorrar
  2. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  3. gracias por el aporte me sirvió de mucho funciona excelente

    ResponderBorrar
  4. gracias por el aporte me sirvió de mucho funciona excelente

    ResponderBorrar
  5. Gracias por el aporte Mari Lu, me ayudaste mucho :3

    ResponderBorrar
  6. Q tal me parece super interesante tu codigo, muchas gracias, pero tengo un inconveniente. Tengo 2 modal el primero para ingresar y el segundo para editar, al ingresar me funciona correctamente pero cuando trae el valor decimal permite ingresar varios "."
    Me puedes ayudar? Gracias

    ResponderBorrar
    Respuestas
    1. Perdoname si utilizo tu blog para dar la solucion que encontre pero alguien mas la pueda estar buscando, el codigo es parecido al tuyo pero evita el error antes mencionado.

      function NumCheck(e, field) {
      key = e.keyCode ? e.keyCode : e.which
      if (key == 8) return true
      if (key > 47 && key < 58) {
      if (field.value == "") return true
      regexp = /.[0-9]{5}$/
      return !(regexp.test(field.value))
      }
      if (key == 46) {
      if (field.value == "") return false
      regexp = /^[0-9]+$/
      return regexp.test(field.value)
      }
      return false
      }

      Borrar
  7. Muy bien, disculpa no lo vi antes, y no me topé con ese error del modal, buena aportación muchachos

    ResponderBorrar