Javascript дата рождения - откажитесь от выбора 30 февраля и т. Д. - PullRequest
0 голосов
/ 01 августа 2011

Я довольно неопытен с Javascript, но я пытаюсь создать такую ​​защиту для процесса регистрации, чтобы пользователь не мог выбрать дату, которая не существует, например. 31 сентября (високосные годы - другое дело 29 февраля, о котором я расскажу позже).

В настоящее время у меня есть это, которое имеет дело только с февраля:

<select name="Day">
<option value="day">Day</option>
<script type="text/javascript">
function printDays(y) {
    var x = 1;
    while (x <= y) {
        document.write("<option value=" + x + ">" + x + "</option>");
        x++;
    }
}
window.onload=printDays(31);
</script>
</select>
<script type="text/javascript">
if (document.getElementById("month").value == feb) {
    printDays(28);
}
</script>

Я уверен, что здесь что-то совершенно очевидно, что не так, но я не достаточно опытен, чтобы это понять!

Ответы [ 4 ]

1 голос
/ 01 августа 2011

Ответ принят - хотя использование селектора даты является хорошей идеей, оно не мешает определенному пользователю (или пользователю с отключенным JavaScript) вернуть недопустимое значение.

Частичным решением будет преобразование введенных значений в дату JavaScript, а затем обратно. Датой для дат javascript является 1970 год, но используется 64-битное значение со знаком (т. Е. Имеет диапазон более 500 000 лет). Обратите внимание, что в javascript месяцы нумеруются 0-11.

Но это не заменяет проверку на стороне сервера!

0 голосов
/ 17 февраля 2015

Проверьте правильность комбинации года, месяца и дня

function checkDate(year, month, day) {
    try {
        var d = new Date(year, month, day);
        return !isNaN(d.getDate()) && d.getDate() == day;
    } 
    catch (e) {
        return false;
    } 
}
0 голосов
/ 01 августа 2011

Я полностью понимаю ваш вопрос, но рассмотрите возможность использования http://www.nickabusey.com/jquery-date-select-boxes-plugin/, чтобы сэкономить ваше рабочее время для чего-то другого.

Демонстрационный код

0 голосов
/ 01 августа 2011

Вы всегда можете использовать плагин, такой как JQueryUI Date Picker , который будет обрабатывать все правила даты для вас ...

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