我在javascript方面遇到了一些麻烦。
我尝试做的是验证来自HTML表单的用户输入。
我有两个html事件:
<form action="attendproc.asp" method="post" onSubmit="return validateForm(this)">
<input type="submit" id="submit" value="Submit" class="button" onClick="return submitForm()">
这是我的javascript:
//Confirm form submission
function submitForm() {
if (confirm("Are you sure you want to submit this form?") == false) {return false}
else {return true}
}
//Validate form input
function validateForm(form) {
fail = validDate(form.date.value)
fail += validNum(form.jsia.value)
fail += validNum(form.jsga.value)
fail += validNum(form.yvcia.value)
fail += validNum(form.yvcga.value)
if (fail == "") {return true}
else {alert(fail) return false}
}
function validDate(field) {
if (/^\d{2}\/\d{2}\/\d{4}$/.test(field) == false) {return "Invalid date format. Please enter a valid date.\n"}
else {return ""}
}
function validNum(field) {
if (isNaN(field)) {return "Invalid input. Please enter a valid integer.\n"}
else {return ""}
}
请注意,我使用RegEx来验证我想要的日期格式。我肯定知道submitForm()函数是有效的。我的痛苦来自其他三个功能。请帮忙!
答案 0 :(得分:0)
肖恩
我终于修好了。
//Confirm form submission
function submitForm() {
if (confirm("Are you sure you want to submit this form?") == false) {return false;}
else {return true;}
}
//Validate attendance form input
function validateAttendForm(form) {
fail = validDate(form.date.value);
fail += validNum(form.jsia.value);
fail += validNum(form.jsga.value);
fail += validNum(form.yvcia.value);
fail += validNum(form.yvcga.value);
if (fail == "") {return true;}
else {alert(fail); return false;}
}
function validDate(field) {
re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
if (re.test(field) == false) {return "Invalid date format. Please enter a valid date.\n";}
else {return "";}
}
function validNum(field) {
if (isNaN(field) || field != parseInt(field)) {return "Invalid input. Please enter a valid interger.\n";}
else {return "";}
}
这是我用于validDate()函数的语法问题。这几乎是一个即插即用修复。
答案 1 :(得分:0)
除了阴暗的格式外,肯定有一件事会引起问题。
isNaN(场) 应该是:isNaN(parseInt(field))
IsNaN仅使用NaN求值为true,而string不是NaN。 ParseInt尝试从字符串中解析int,并返回一个数字或NaN。