所以我的表单设置如下:
<form id="form" name='form' method="post" action="#" onsubmit="validate(this)">
我有以下函数来验证表单,但问题是,当验证失败时,表单会重置,因此您必须重新键入所有信息。虽然从我所读过的内容中得到的回报是虚假的;在验证功能中应该防止这种情况,那么我做错了什么?
var error = false;
var errors = [];
function validate(form)
{
var name = form.inputname.value;
var phone = form.inputphone.value;
var email = form.inputemail.value;
var make = form.inputmake.value;
var model = form.inputmodel.value;
var month = form.month.value;
var day = form.day.value;
if(!name || !phone || !email || !make || !model || !day || !month)
{
alert("Please complete the form");
errors[errors.length] = "Incomplete Form\n";
return false;
}
if (month < 1 || month > 12 || day < 1 || day > 30) {
alert("Please enter valid Month/Day in format 1-12/1-30 ");
document.getElementById("month").focus();
errors[errors.length] = "Invalid Date\n";
return false;
}
if (errors.length > 0) {
alert(errors);
return false;
}
else if (errors.length == 0)
{
window.location.href("reserved300771292.aspx");
}
return true;
}
提前致谢!!
答案 0 :(得分:0)
首先,虽然您的函数根据您的要求正确返回true或false,但您不会将其返回onsubmit
,因此您的表单onsubmit应该读取
onsubmit="return validate(this)"
其次,由于errors[]
是全球性的,您可能会遇到一个有趣的错误。如果第一个表单验证失败,那么每个后续表单提交也将失败(即使它是有效的),因为您没有清除errors
数组。在errors[]
函数中声明validate
变量。
此外,我不确定您将在验证功能中重定向浏览器的确切行为。这可能会阻止表单提交(即表单上收集的数据不会被发布)或重定向不起作用。我个人不会尝试这种方法,如果一切按预期的方式在服务器端重定向,因为验证服务器端和客户端是最佳做法