Javascript месяц и день и год проверить - PullRequest
0 голосов
/ 07 октября 2010

Я пытаюсь проверить MM / DD /YYYY.

В настоящее время мой скрипт завершается ошибкой, когда вы вводите 0/0/0 или 00/00/0000. Я пытаюсь проверить, что пользователь старше 21 года и должен ввести действительный двухзначный месяц, двухзначный день и четырехзначный год.

Есть предложения?

$("#gate-box").submit(function() {

    var day = $("#day").val();
    var month = $("#month").val();
    var year = $("#year").val();

    var age = 21;

    var mydate = new Date();
    mydate.setFullYear(year, month - 1, day);

    var currdate = new Date();
    currdate.setFullYear(currdate.getFullYear() - age);
    if ((currdate - mydate) < 0) {        
        $.msg("Sorry, you must be at least " + age + " to enter.");
        return false;
    }
    else if (month > 12) {
        $('#month').css({ 'border': '1px solid red' });
        $.msg("Please enter a valid month.");
        $('#month').focus();
        return false;
    }
    else if (day > 31) {
        $('#month').css({ 'border': 'none' });
        $('#day').css({ 'border': '1px solid red' });
        $.msg("Please enter a valid day.");
        $('#day').focus();
        return false;
    }
    else if (month.length === 0 || day.length === 0 || year.length === 0) {
        $('#day').css({ 'border': 'none' });
        $.msg("Please enter all fields.");
        return false;
    }

    if ((currdate - mydate) > 0) {
        $.colorbox.close()
        $.setCookie('diageoagecheck', 'verified', { duration: 3 });
    }
    return false;
});

1 Ответ

4 голосов
/ 07 октября 2010

Вы должны использовать следующий метод, чтобы проверить, действительно ли ввод является числовым, и затем проверить диапазоны

, скопированные из Проверка чисел в JavaScript - IsNumeric ()

function IsNumeric(input)
{
   return (input - 0) == input && input.length > 0;
}

И используйте это так ( после чтения входных данных )

if (!IsNumeric(day) || day < 1) 
    {/*handle wrong day here and return false*/}
if (!IsNumeric(month) || (month < 1) || (month > 12)) 
    {/*handle wrong month here and return false*/}
if (!IsNumeric(year) || (year < 1900) || (year > 2100)) 
    {/*handle wrong year here and return false*/}

var lastDayOfMonth = new Date(year, parseInt(month) + 1, -1).getDate();
if (day > lastDayOfMonth) {
    {/*handle wrong year here and return false*/}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...