Tengo una simple cuestión: me gustaría ver un campo para ver si es un entero, si no está en blanco. Que no voy a usar ningún plugin adicional, sólo jQuery. Mi código es el siguiente:

if($('#Field').val() != "")
{
    if($('#Field').val().match('^(0|[1-9][0-9]*)$'))
    {
        errors+= "Field must be numeric.<br/>";
        success = false;
    }
}

…No parece funcionar. A donde voy mal?

El error que recibo es val() is not an object.


Resultó que el verdadero problema era que yo tenía mi nombre de elemento y no el Id.

  • Le falta un cierre de cotización en la primera línea – es que sólo un error tipográfico?
  • cuando dices numéricos, ¿te refieres a cualquier tipo de número (flota y todo eso) o no puede significar un número entero?
  • stackoverflow.com/questions/18082/…
  • El código parece estar funcionando, en cuanto a las pruebas. Esta es la prueba en Chrome y EXPLORER 7 en Windows.

6 Comentarios

  1. 22

    Esto debería funcionar. Me gustaría recortar el espacio en blanco desde el campo de entrada primera de todas:

    if($('#Field').val() != "") {
        var value = $('#Field').val().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
        var intRegex = /^\d+$/;
        if(!intRegex.test(value)) {
            errors += "Field must be numeric.<br/>";
            success = false;
        }
    } else {
        errors += "Field is blank.</br />";
        success = false;
    }
    • Puedo obtener val() no es un objeto con esto.
    • Johnston – porque me había escrito directamente en el navegador en contra de mi mejor juicio, y fue completamente hallan roto. Prueba ahora, si se quiere.
  2. 28

    Regex no es necesario, ni plugins es

    if (isNaN($('#Field').val() / 1) == false) {
        your code here
    }
  3. 4

    Sé que no hay ninguna necesidad de agregar un plugin para esto.

    Pero esto puede ser útil si usted está haciendo muchas cosas con los números. Así checkout este plugin al menos por un conocimiento del punto de vista.

    El resto de karim79 la respuesta es super cool.

    <!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
            <script type="text/javascript" src="jquery.numeric.js"></script>
        </head>
    
        <body>
            <form>
                Numbers only:
                <input class="numeric" type="text" />
                Integers only:
                <input class="integer" type="text" />
                No negative values:
                <input class="positive" type="text" />
                No negative values (integer only):
                <input class="positive-integer" type="text" />
                <a href="#" id="remove">Remove numeric</a>
            </form>
    
            <script type="text/javascript">
                $(".numeric").numeric();
    
                $(".integer").numeric(false, function() {
                    alert("Integers only");
                    this.value = "";
                    this.focus();
                });
    
                $(".positive").numeric({ negative: false },
                    function() {
                        alert("No negative values");
                        this.value = "";
                        this.focus();
                    });
    
                $(".positive-integer").numeric({ decimal: false, negative: false },
                    function() {
                        alert("Positive integers only");
                        this.value = "";
                        this.focus();
                    });
    
                $("#remove").click(
                    function(e)
                    {
                        e.preventDefault();
                        $(".numeric,.integer,.positive").removeNumeric();
                    }
                );
            </script>
    
        </body>
    </html>
  4. 0

    Todos los servicios básicos de validación mediante el uso de una clase:

    $('.IsInteger,.IsDecimal').focus(function (e) {
    if (this.value == "0") {
    this.value = "";
    }
    });
    $('.IsInteger,.IsDecimal').blur(function (e) {
    if (this.value == "") {
    this.value = "0";
    }
    });
    $('.IsInteger').keypress(function (e) {
    var charCode = (e.which) ? e.which : e.keyCode;
    if (charCode > 31
    && (charCode < 48 || charCode > 57))
    return false;
    });
    $('.IsDecimal').keypress(function (e) {
    var charCode = (e.which) ? e.which : e.keyCode;
    if (this.value.indexOf(".") > 0) {
    if (charCode == 46) {
    return false;
    }
    }
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
    return false;
    });
    $('.IsSpecialChar').keypress(function (e) {
    if (e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 37 && e.keyCode != 38 && e.keyCode != 39 && e.keyCode != 40)
    return false;
    else
    return true;
    });
    $('.IsMaxLength').keypress(function (e) {
    var length = $(this).attr("maxlength");
    return (this.value.length <= length);
    });
    $('.IsPhoneNumber').keyup(function (e) {
    var numbers = this.value.replace(/\D/g, ''),
    char = { 0: '(', 3: ') ', 6: ' - ' };
    this.value = '';
    for (var i = 0; i < numbers.length; i++) {
    this.value += (char[i] || '') + numbers[i];
    }
    });
    $('.IsEmail').blur(function (e) {
    var flag = false;
    var email = this.value;
    if (email.length > 0) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    flag = regex.test(email);
    }
    if (!flag)
    this.value = "";
    });

    Ejemplo:

    <asp:TextBox 
    runat="server" 
    ID="txtDeliveryFee" 
    TextMode="SingleLine" 
    CssClass="form-control IsInteger" 
    MaxLength="3" 
    Text="0"
    ></asp:TextBox>

    Sólo hay que poner el nombre de la clase en la entrada.

    • ¿Qué «clase» y «entrada» se refieren a (primera y la última frase, respectivamente)? ¿Cuál es el nombre de la clase?
    • la entrada es textbox y de la clase es cssClass ( e.g: «IsInteger»)
  5. 0

    Usted no necesita un regex para este. El uso de la isNAN() función de JavaScript.

    La isNaN() la función que determina si un valor es un número de ilegales
    (No es un Número). Esta función devuelve true si el valor es NaN, y
    false si no.

    if (isNaN($('#Field').val()) == false) {
    //It's a number
    }

Dejar respuesta

Please enter your comment!
Please enter your name here