JQuery: проверить, что текстовое поле числовое - PullRequest
23 голосов
/ 09 марта 2010

У меня есть простая проблема - я хотел бы проверить поле, чтобы увидеть, если это целое число, если оно не пустое. Я не использую никаких дополнительных плагинов, просто 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.

ОБНОВЛЕНИЕ: Оказалось, что реальная проблема заключалась в том, что у меня установлено имя элемента, а не идентификатор.

Ответы [ 6 ]

27 голосов
/ 27 сентября 2012

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

if (isNaN($('#Field').val() / 1) == false) {
    your code here
}
22 голосов
/ 09 марта 2010

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

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;
}
4 голосов
/ 12 июня 2012

Я знаю, что для этого не нужно добавлять плагин. Но это может быть полезно, если вы делаете так много с числами. Так что проверьте этот плагин, по крайней мере, с точки зрения знаний. Отдых Карим79 Ответ супер круто.

    <!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>
3 голосов
/ 12 июля 2013

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

if($('#Field').val() != "")
{
    if($.isNumeric($('#Field').val()) {
        errors+= "Field must be numeric.<br/>";
        success = false;
    }
}
0 голосов
/ 12 августа 2015

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

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

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

  //it's a number
}
0 голосов
/ 12 августа 2015

Все базовые проверки по классам

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

Пример: -

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...