验证日期

时间:2011-11-16 00:28:07

标签: javascript forms function

我有一个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>

实际功能是提供的。变量“月”,“日”和“年”我放在那里。我可以获得值,但我无法让它们在函数中工作。

最终结果是底部的文本框说“2011年1月1日是有效日期”。或“2/31/2011”不是有效日期。“请帮忙......

3 个答案:

答案 0 :(得分:2)

你有:

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

拼写错误(a在validDate中错误地大写)。也许这是问题的一部分?

答案 1 :(得分:0)

您需要在某个时刻调用函数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。我将填写其他参数(日,年)作为读者的练习。

答案 2 :(得分:0)

我做了一个小提琴: http://jsfiddle.net/MqCeV/