Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript未在第二次提交请求时验证表单_Javascript_Forms_Validation - Fatal编程技术网

JavaScript未在第二次提交请求时验证表单

JavaScript未在第二次提交请求时验证表单,javascript,forms,validation,Javascript,Forms,Validation,我有JavaScript代码,可以在第一次提交请求时验证表单,但是如果用户再次点击提交,即使他们没有纠正表单错误,表单也不会处理验证函数,只会提交 我希望每次用户单击submit按钮时都执行验证功能 谢谢你的帮助,代码如下。 马丁 请输入您的名字 名字* 请输入您的姓氏 姓 请输入您的电子邮件地址 电子邮件地址* 函数validateForm() { var x=document.forms[“signup”][“firstName”].value; var y=document.forms[

我有JavaScript代码,可以在第一次提交请求时验证表单,但是如果用户再次点击提交,即使他们没有纠正表单错误,表单也不会处理验证函数,只会提交

我希望每次用户单击submit按钮时都执行验证功能

谢谢你的帮助,代码如下。 马丁


请输入您的名字
名字*

请输入您的姓氏

请输入您的电子邮件地址
电子邮件地址* 函数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来调用错误消息。我仍然存在验证函数只执行一次的问题当提交按钮被点击两次时。请粘贴您的问题代码。您的意思是“当提交按钮被点击两次时,验证功能只执行一次。”哈?问题和代码在上面,最初发布。请阅读原始问题。