Ошибка проверки даты Jquery - PullRequest
0 голосов
/ 07 июня 2011

Я пытался реализовать функцию jQuery для проверки форматов даты, но столкнулся с любопытной проблемой. Когда число «8» или «9» содержится в дне или месяце (например, 08.06.2011), в нем указывается, что дата недействительна ...

Демо-версия доступна здесь: http://www.geektantra.com/projects/jquery-form-validate/advanced_demo/

Спасибо за помощь!

1 Ответ

4 голосов
/ 07 июня 2011

Когда возникают проблемы со значениями 08 и 09, вы почти наверняка забыли указать параметр radix для parseInt().

Если он не указан, он пытается автоматически определить базу по входу, а если он находит начальный ноль, он пытается проанализировать его как восьмеричное число. Для чисел от 00 до 07 это не проблема, он даже оценивается так же, как если бы это был base-10, но по понятным причинам 08 и 09 являются недопустимыми восьмеричными числами.

Чтобы избежать этой проблемы в будущем, убедитесь, что вы всегда устанавливаете параметр radix, чтобы принудительно анализировать число как основание-10, независимо от ввода:

var value = parseInt(someString, 10);

Проверьте свой javascript в строке 29 вашего HTML-файла и измените его следующим образом:

jQuery("#ValidDate").validate({
    expression: "if (!isValidDate(parseInt(VAL.split('-')[2], 10), parseInt(VAL.split('-')[0], 10), parseInt(VAL.split('-')[1], 10))) return false; else return true;",
    message: "Please enter a valid Date"
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...