Проверка даты - PullRequest
       19

Проверка даты

2 голосов
/ 16 ноября 2011

У меня есть задание для класса javascript, которое требует от меня подтверждения даты.Учитель предоставил функцию для фактической проверки, но остальное зависит от меня.Я работал над этим пару часов и застрял.Вот что у меня есть ...

<html>
<head>
<title>Date Validation</title>
<script type="text/javascript"> 

var month = document.validateDate.month.value;
var day = document.validateDate.day.value;
var year = document.validateDate.year.value;



function validDate( month, day, year) 
{ 
   // Test for leap year 
    if ((year % 400 == 0) || (year % 4 == 0) &&                 
       !(year % 100 == 0)) 
          leap = true; 
    else 
          leap = false; 

    // Validate date                              // Assume a valid date-test otherwise
    if (year < 1900 || year > 2050)               // year must be four digits and      
        return false;                             //     within reasonable range 
    else if ((month < 1) || (month > 12) ||       // test general date and month range 
             (day < 1) || (day > 31)) 
        return false;      
    else if (((month == 4) || (month == 6) ||     // test 30 Day months 
              (month == 9) || (month == 11)) && (day == 31)) 
        return false;      
    else if (month == 2 && leap && day > 29)      // test February leap years 
        return false;          
    else if (month == 2 &&  !leap && day > 28)    // test February NON-leap years 
        return false;          
    else 
        return true;                              // otherwise, date is OK 

} 
</script>
<body>

<h1>Date Validator</h1>

<p>Please enter a date to be validated, then press "Validate"</p>
<form action="" name="validateDate">
<select name="month">
<option value="1">January
<option value="2">February
<option value="3">March
<option value="4">April
<option value="5">May
<option value="6">June
<option value="7">July
<option value="8">August
<option value="9">September
<option value="10">October
<option value="11">November
<option value="12">December
</select>

<select name="day">
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
<option value="11">11
<option value="12">12
<option value="13">13
<option value="14">14
<option value="15">15
<option value="16">16
<option value="17">17
<option value="18">18
<option value="19">19
<option value="20">20
<option value="21">21
<option value="22">22
<option value="23">23
<option value="24">24
<option value="25">25
<option value="26">26
<option value="27">27
<option value="28">28
<option value="29">29
<option value="30">30
<option value="31">31
</select>

<select name="year">
<option value="2011">2011
<option value="2012">2012
<option value="2013">2013
<option value="2014">2014
<option value="2015">2015
<option value="2016">2016
<option value="2017">2017
<option value="2018">2018
<option value="2019">2019
<option value="2020">2020
</select>

<input type="button" value="Validate" onclick="validDAte( month, day, year)"/>
<br />

<input type="text" name="textbox" style="width:275"/>
</form>

</body>
</html>

Фактическая функция - это то, что было предоставлено.Переменные "месяц", "день" и "год" я положил туда.Я могу получить значения, но не могу заставить их работать в функции.

В результате текстовое поле внизу будет выглядеть примерно так: «01.01.2011 - действительная дата».или "31.02.2011" недействительна. "Пожалуйста, помогите ...

Ответы [ 3 ]

2 голосов
/ 16 ноября 2011

У вас есть:

<input type="button" value="Validate" onclick="validDAte( month, day, year)"/>
                                                     ^ misspelled

Что написано с ошибкой (в validDate заглавная буква a неправильно указана). Может быть, это часть проблемы?

0 голосов
/ 16 ноября 2011

Я сделал скрипку: http://jsfiddle.net/MqCeV/

0 голосов
/ 16 ноября 2011

Вам нужно вызвать функцию validDate в какой-то момент. Просто создать переменные с тем же именем, что и у параметров функции, не так, как это делается.

Предположительно, у вас будет кнопка на странице, и при нажатии она вызовет функцию и установит значение текстового поля.

Скрипка в другом ответе будет работать, но делает намного больше, чем вас просили. Возникшая у вас проблема связана с неправильным пониманием того, как вызывать функцию. У функции есть две стороны: объявление и вызов. Инструктор дал вам декларацию и попросил вас создать вызов.

Когда вы вызываете функцию, вы заменяете параметры в объявлении фактическими значениями для использования. Например, если у вас была простая функция:

function Add2(aValue) { return aValue + 2; }

Ваш вызов не обязательно будет содержать параметр с именем aValue. Скорее вы использовали бы имя функции и заменили бы параметр фактическим значением: Add2(7) вернет 9.

Возвращаясь к вашей проблеме, вам нужно вызвать функцию validDate в вашем обработчике кнопок. Во-первых, исправьте орфографию: JavaScript учитывает регистр. Затем замените каждое имя параметра значением из вашей формы. Я покажу вам один:

<input type="button" 
       value="Validate" 
       onclick="validDate(document.getElementById('month').value, day, year)"/>

Я предпочитаю document.getElementById. Я оставляю заполнение других параметров (день, год) в качестве упражнения для читателя.

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