Целочисленная валидация с использованием JavaScript - PullRequest
2 голосов
/ 02 января 2012

Я использую следующий код для проверки, является ли поле пустым или нет.

<label>Sermon Title</label>
<input class="text-input small-input" type="text" id="sermon_title" name="sermon_title" />
<span id="stitlespansuccess" class="input-notification success png_bg" style="display: none;"></span>
<span id="stitlespanerror" class="input-notification error png_bg" style="display: none;"></span>

    $(document).ready(function () {  
        var submit           = false;
        $('#sermon_title').bind('focusout', function() {
            var sermon_title       = $('#sermon_title').val();
            var pid       = $('#preacher').val();
            if( sermon_title == "") {
                $('#stitlespanerror').html("Title required");
                $('#stitlespanerror').show();
                $('#stitlespansuccess').hide();
                submit = false;
            }
            else
            {
                $('#stitlespanerror').hide();
                $.post("<?= site_url('admin/sermons/uniquetitle/') ?>", { sermon_title: sermon_title,pid:pid },
                function(data){
                    if( "success" == data.trim() ) {
                        $('#stitlespansuccess').show();
                        submit = true;
                    }
                    else
                    {
                        $('#stitlespansuccess').hide();
                        $('#stitlespanerror').html("Title already taken");
                        $('#stitlespanerror').show();
                        submit = false;
                    }
                });
            }
        });
});

Я хочу проверить, является ли значение целым или нет.

Ответы [ 3 ]

4 голосов
/ 02 января 2012

Это правильная функция для проверки целых чисел (например, например: 1.0 и т. Д.)

function is_int(value){ 
  if((parseFloat(value) == parseInt(value)) && !isNaN(value)){
    return true;
  } else { 
    return false;
  } 
}
1 голос
/ 02 января 2012

попробуйте

if (isNaN (значение))

надеюсь, что это будет работать

0 голосов
/ 02 января 2012

Вы хотите проверить, является ли какое значение целым числом? Конечно, не проповедь? Там много кода, который, похоже, совсем не связан с вашим вопросом.

В любом случае, если вы хотите проверить вводимое пользователем значение, чтобы убедиться, что оно является целым числом, вы можете преобразовать его в число и затем проверить, равно ли число тому же числу, округленному в меньшую сторону:

function isInteger(val) {
   var n = +val;    // convert with unary plus operator
   return val != "" && n === Math.floor(n);
}

Обратите внимание, что пустая строка будет преобразована в 0, следовательно, проверка того, что val не является пустой строкой.

Потенциальная проблема: в приведенном выше случае "1.000" будет рассматриваться как целое число - это приемлемо?

Если вы не хотите, чтобы пользователь вводил десятичную точку, другой способ приблизиться к ней - это проверить с помощью регулярного выражения, убедившись, что введены только цифры (без десятичной точки):

function isInteger(val) {
   return /^-?\d+$/.test(val);
}

Если вам нужно ограничить его определенным количеством цифр, это легко сделать с помощью регулярного выражения:

// e.g., max four digits, optional minus sign:
return /^-?\d{1,4}$/.test(val);

(Примечание: `isNaN ()" сломан ".)

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