JavaScript未在第二次提交请求时验证表单
我有JavaScript代码,可以在第一次提交请求时验证表单,但是如果用户再次点击提交,即使他们没有纠正表单错误,表单也不会处理验证函数,只会提交 我希望每次用户单击submit按钮时都执行验证功能 谢谢你的帮助,代码如下。 马丁JavaScript未在第二次提交请求时验证表单,javascript,forms,validation,Javascript,Forms,Validation,我有JavaScript代码,可以在第一次提交请求时验证表单,但是如果用户再次点击提交,即使他们没有纠正表单错误,表单也不会处理验证函数,只会提交 我希望每次用户单击submit按钮时都执行验证功能 谢谢你的帮助,代码如下。 马丁 请输入您的名字 名字* 请输入您的姓氏 姓 请输入您的电子邮件地址 电子邮件地址* 函数validateForm() { var x=document.forms[“signup”][“firstName”].value; var y=document.forms[
请输入您的名字
名字*
请输入您的姓氏
姓
请输入您的电子邮件地址
电子邮件地址*
函数validateForm()
{
var x=document.forms[“signup”][“firstName”].value;
var y=document.forms[“signup”][“lastName”].value;
var z=document.forms[“signup”][“emailAddress”].value;
var atpos=z.indexOf(“@”);
变量fname;
var sname;
var电子邮件;
/*验证名字*/
如果(x==null | | x==“”)
{
document.getElementById(“InactiveErrorName”).id=“activeErrorFname”;
fname=“true”;
}
/*验证姓氏*/
如果(y==null | | y==“”)
{
document.getElementById(“InactiveErrorName”).id=“activeErrorSname”;
sname=“true”;
}
/*验证电子邮件*/
如果(atpos您面临的问题是由于您正在更改某些元素的id而造成的。第一次运行代码时,这些语句会成功运行:
document.getElementById("inactiveErrorFname").id = "activeErrorFname";
document.getElementById("inactiveErrorSname").id = "activeErrorSname";
document.getElementById("inactiveErrorEmail").id = "activeErroremail";
但是,第二次这些元素的id发生更改,导致这些语句调用不存在的元素。这会导致javascript致命错误,结果是no返回false
。因此,第二次提交表单时,表单将按正常方式提交。此问题的解决方案是不更改他正在更改错误标签的类别。您可以在中找到一个示例
HTML:
<form action="#" method="post" name="signup" onsubmit="return validateForm()">
<label for="firstname">
<span class="inactive" id="errorFname">Please enter your first name<br></span>
First name <strong title="Required" class="required">*</strong>
</label><br>
<input type="text" name="firstName"><br><br>
<label for="surname">
<span class="inactive" id="errorSname">Please enter your Surname<br></span>
Surname
</label><br>
<input type="text" name="lastName"><br><br>
<label for="email">
<span class="inactive" id="errorEmail"><br>Please enter your Email address<br></span>
Email address <strong title="Required" class="required">*</strong>
</label><br>
<input type="text" name="emailAddress"><br><br>
<input class="button" type="submit" value="Sign up" />
</form>
function validateForm()
{
var x=document.forms["signup"]["firstName"].value;
var y=document.forms["signup"]["lastName"].value;
var z=document.forms["signup"]["emailAddress"].value;
var atpos=z.indexOf("@");
var fname;
var sname;
var email;
/* Validate first name */
if (x==null || x=="")
{
document.getElementById("errorFname").className = "active";
fname = "true";
}
/* Validate Surname */
if (y==null || y=="")
{
document.getElementById("errorSname").className = "active";
sname = "true";
}
/* Validate email */
if (atpos<1)
{
document.getElementById("errorEmail").className = "active";
email = "true";
}
if (fname=="true" || sname=="true" || email =="true")
{
return false;
}
return false;
}
请输入您的名字
名字*
请输入您的姓氏
姓
请输入您的电子邮件地址
电子邮件地址*
Javascript:
<form action="#" method="post" name="signup" onsubmit="return validateForm()">
<label for="firstname">
<span class="inactive" id="errorFname">Please enter your first name<br></span>
First name <strong title="Required" class="required">*</strong>
</label><br>
<input type="text" name="firstName"><br><br>
<label for="surname">
<span class="inactive" id="errorSname">Please enter your Surname<br></span>
Surname
</label><br>
<input type="text" name="lastName"><br><br>
<label for="email">
<span class="inactive" id="errorEmail"><br>Please enter your Email address<br></span>
Email address <strong title="Required" class="required">*</strong>
</label><br>
<input type="text" name="emailAddress"><br><br>
<input class="button" type="submit" value="Sign up" />
</form>
function validateForm()
{
var x=document.forms["signup"]["firstName"].value;
var y=document.forms["signup"]["lastName"].value;
var z=document.forms["signup"]["emailAddress"].value;
var atpos=z.indexOf("@");
var fname;
var sname;
var email;
/* Validate first name */
if (x==null || x=="")
{
document.getElementById("errorFname").className = "active";
fname = "true";
}
/* Validate Surname */
if (y==null || y=="")
{
document.getElementById("errorSname").className = "active";
sname = "true";
}
/* Validate email */
if (atpos<1)
{
document.getElementById("errorEmail").className = "active";
email = "true";
}
if (fname=="true" || sname=="true" || email =="true")
{
return false;
}
return false;
}
函数validateForm()
{
var x=document.forms[“signup”][“firstName”].value;
var y=document.forms[“signup”][“lastName”].value;
var z=document.forms[“signup”][“emailAddress”].value;
var atpos=z.indexOf(“@”);
变量fname;
var sname;
var电子邮件;
/*验证名字*/
如果(x==null | | x==“”)
{
document.getElementById(“errorFname”).className=“活动”;
fname=“true”;
}
/*验证姓氏*/
如果(y==null | | y==“”)
{
document.getElementById(“errorSname”).className=“活动”;
sname=“true”;
}
/*验证电子邮件*/
如果(Atpos为什么要使用ID来表示错误以及为什么要更改它们?给它们一个类,然后更改该类。你的问题解决了吗?如果是,让我发布一个答案。没有问题仍然存在,只是我使用类而不是单独的ID来调用错误消息。我仍然存在验证函数只执行一次的问题当提交按钮被点击两次时。请粘贴您的问题代码。您的意思是“当提交按钮被点击两次时,验证功能只执行一次。”哈?问题和代码在上面,最初发布。请阅读原始问题。