¿Como hacer un input number excluyendo el primer 0?

publicado por: Anonymous

Tengo un input que solo acepta numeros positivos (sin decimal ni guiones) pero quiero excluir el primer cero

<input id="cantidad[1]" NAME="cantidad[1]" class="form-control" type="number" pattern="d*"/ min="1">
<script type="text/javascript">
    var myInput = document.getElementsByTagName('input')[0];
    myInput.addEventListener('keypress', function(e) {
    var key = !isNaN(e.charCode) ? e.charCode : e.keyCode;
    function keyAllowed() {
        var keys = [8,9,13,16,17,18,19,20,27,46,48,49,50,
                    51,52,53,54,55,56,57,91,92,93];
        if (key && keys.indexOf(key) === -1)
            return false;
        else
            return true;
        }
        if (!keyAllowed())
            e.preventDefault();
    }, false);
    // EDIT: Disallow pasting non-number content
    myInput.addEventListener('paste', function(e) {
        var pasteData = e.clipboardData.getData('text/plain');
        if (pasteData.match(/[^0-9]/))
            e.preventDefault();
    }, false);
</script>

Gracias

solución

Si lo que quieres es eliminar los ceros delanteros conforme se vayan escribiendo, puedes comprobar si la última tecla pulsada fue un cero, y si lo fue y el primer carácter del campo es un cero, entonces eliminar todos los ceros delanteros que encuentre..

Usando expresiones regulares, bastaría con añadir algo como esto al código que ya tienes:

Este código sólo se encarga de eliminar los ceros que se encuentren al principio del campo, para asegurarte de que sea un número debes seguir aplicando las diferentes comprobaciones que ya tenías en tu código, por eso digo lo de “añadir al código que ya tienes”.

_x000D_

_x000D_

var myInput = document.getElementsByTagName('input')[0];_x000D_
_x000D_
myInput.addEventListener("keyup", function(e) {_x000D_
_x000D_
  var key = e.keyCode || e.charCode;_x000D_
  _x000D_
  // si la tecla es un cero y el primer carácter es un cero_x000D_
  if (key == 48 && this.value[0] == "0") {_x000D_
    // se eliminan los ceros delanteros_x000D_
    this.value = this.value.replace(/^0+/, '');_x000D_
  }_x000D_
  _x000D_
});

_x000D_

<input id="cantidad[1]" NAME="cantidad[1]" class="form-control" type="number" pattern="d*"/ min="1">

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *