我有一个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”不是有效日期。“请帮忙......
答案 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/