Подтвердить что ты не робот

Проверьте, что текстовое поле является числовым, используя jQuery

У меня есть простая проблема - я хотел бы проверить поле, чтобы увидеть, если это целое число, если оно не пустое. Я не использую никаких дополнительных плагинов, просто jQuery. Мой код выглядит следующим образом:

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

... Это не похоже на работу. Куда я иду не так?

Я получаю сообщение об ошибке: val() is not an object.


Оказалось, что реальная проблема заключалась в том, что у меня было установлено имя элемента, а не идентификатор.

4b9b3361

Ответ 1

Это должно сработать. Я бы обрезать пробел из поля ввода в первую очередь:

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;
}

Ответ 2

Regex не требуется, равно как и плагины

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

Ответ 3

Я знаю, что нет необходимости добавлять плагин для этого.

Но это может быть полезно, если вы делаете так много вещей с числами. Так что зацените этот плагин хотя бы с точки зрения знаний.

Остальная часть ответа karim79 очень крутая.

<!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

Я не уверен, когда это было реализовано, но в настоящее время вы можете использовать http://api.jquery.com/jQuery.isNumeric/

if($('#Field').val() != "")
{
    if($.isNumeric($('#Field').val()) {
        errors+= "Field must be numeric.<br/>";
        success = false;
    }
}

Ответ 5

Все основные проверки с использованием класса:

$('.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 = "";
});

Пример:

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

Просто введите имя класса в поле ввода.

Ответ 6

Вам не нужно регулярное выражение для этого. Используйте isNAN() JavaScript.

Функция isNaN() определяет, является ли значение недопустимым числом (Not-a-Number). Эта функция возвращает true, если значение равно NaN, и false, если нет.

if (isNaN($('#Field').val()) == false) {

    // It a number
}