我写了一个html表单,允许用户从下拉菜单中选择他们的生日。一旦用户提交表单,那么这些值将被存储到javascript函数中的变量中,该函数将首先检查用户是否从每个字段(月,日)中选择了一个值,然后验证生日是否为有效日期。如果一切正确,那么下一个表格就是加载。我的问题是,一旦函数验证已选择了一个月和一天,程序就会加载下一个表单而不检查年份。
这是java脚本函数:
function checkBday() {
var day = document.forms["register"]["DateOfBirth_Day"].value;
var month = document.forms["register"]["DateOfBirth_Month"].value;
var year = document.forms["register"]["DateOfBirth_Year"].value;
if(month == "- Month -") {
alert("Select a month");
return false;
}
if(day == "- Day -") {
alert("Select a day");
return false;
}
if(year == "- year -") {
alert("Select a year");
return false;
}
if((month == 2 && day > 28) || (month == 4 && day == 31) || (month == 6 && day == 31) || (month == 9 && day == 31) || (month == 11 && day == 31)) {
alert("Invalid birthday");
return false;
}
}
这是函数调用:
if(checkBday() == false) {
return false; }
else {
alert("Registration was successful!");
return true; }
- 日 - 月 - 和 - 年 - 是默认值,如果从下拉菜单中未选择任何内容。感谢你在这方面的帮助。
答案 0 :(得分:1)
我会重构你的代码看起来像这样:
function checkBday() {
var day = document.forms["register"]["DateOfBirth_Day"].value;
var month = document.forms["register"]["DateOfBirth_Month"].value;
var year = document.forms["register"]["DateOfBirth_Year"].value;
var default_month = "- Month -";
var default_day = "- Day -";
var default_year = "- Year -"
// Validate presence of all fields.
if (month == default_month) {
alert("Select a month");
return false;
} else if (day == default_day) {
alert("Select a day");
return false;
} else if (year == default_year) {
alert("Select a year");
return false;
}
// Validate date.
if((month == 2 && day > 28) || (month == 4 && day == 31) || (month == 6 && day == 31) || (month == 9 && day == 31) || (month == 11 && day == 31)) {
alert("Invalid birthday");
return false;
} else {
return true;
}
}
另外,我相信您的代码中可能存在拼写错误。您将年份与“ - 年 - ”进行比较。年份未资本化的情况(“ - 年 - ”)。除了函数没有返回任何内容之外,这可能是问题。
答案 1 :(得分:1)
它将以未定义的形式返回,因为如果条件一直落在嵌套值中,则不会给出返回值。
带上你的"否则"声明并将其放在实际函数的结束括号之前,如下所示:
function checkBday() {
var day = document.forms["register"]["DateOfBirth_Day"].value;
var month = document.forms["register"]["DateOfBirth_Month"].value;
var year = document.forms["register"]["DateOfBirth_Year"].value;
if(month == "- Month -") {
alert("Select a month");
return false; }
if(day == "- Day -") {
alert("Select a day");
return false; }
if(year == "- year -") {
alert("Select a year");
return false; }
if((month == 2 && day > 28) || (month == 4 && day == 31) || (month == 6 && day == 31) || (month == 9 && day == 31) || (month == 11 && day == 31)) {
alert("Invalid birthday");
return false;
}
alert("Registration was successful!");
return true;
}
答案 2 :(得分:0)
创建一个名为registration_successful的新变量。 如果在运行checkBday后变量为true,请继续下一个表单。
function checkBday() {
var registration_succesfull = false;
var day = document.forms["register"]["DateOfBirth_Day"].value;
var month = document.forms["register"]["DateOfBirth_Month"].value;
var year = document.forms["register"]["DateOfBirth_Year"].value;
if(month == "- Month -") {
alert("Select a month");
registration_succesfull = false; }
else if (day == "- Day -") {
alert("Select a day");
registration_succesfull = false; }
else if (year == "- year -") {
alert("Select a year");
registration_succesfull = false; }
else if((month == 2 && day > 28) || (month == 4 && day == 31) || (month == 6 && day == 31) || (month == 9 && day == 31) || (month == 11 && day == 31)) {
alert("Invalid birthday");
registration_succesfull = false; }
else {registration_succesfull = true; }
return registration_succesfull;
}
注意:2月也可以有29天