【问题标题】:cannot display all warning message in form validation with span [closed]无法在跨度表单验证中显示所有警告消息[关闭]
【发布时间】:2011-12-11 18:54:30
【问题描述】:

我正在制作一个带有验证的用户注册表单。这就是我的简单表单字段。

<tr>
    First Name:
    <input type="text" name="fname" id="letters"  /><span id="error" style="color:red;"></span>
<tr>

<tr>  
    Last Name:
    <input type="text" name="lname"  id="letters1"  /><span id="error1" style="color:red;"></span>
</tr>
<input type="submit" value="submit" name="submit" />

我在提交时使用验证功能 onsubmit="return ValidateForm();

在验证函数中

function ValidateForm(){

    if (document.reg.fname.value=="" || !document.reg.fname.value.match(/[^\s]/))
    {
        document.getElementById("error").innerHTML = "enter first Name"
        return false;
    }
    else
    {
        document.getElementById("error").innerHTML = '';

    }

    if (document.reg.lname.value=="" || !document.reg.lname.value.match(/[^\s]/))
    {
        document.getElementById("error1").innerHTML = "enter last Name"
        return false;
    }
    else{
        document.getElementById("error1").innerHTML = '';

    }

但是当我提交按钮时尝试..错误消息仅显示第一个输入框,当我填写第一个框然后提交..这次错误消息显示第二个文本框。我想同时显示所有错误消息。

【问题讨论】:

  • 应该在你被否决之前详细说明
  • 这不是一个合适的问题

标签: php javascript validation


【解决方案1】:

删除测试之间的返回 false

为了快速修复您的代码,我会这样做

DEMO HERE

function ValidateForm(theForm) {
    var error1 = (theForm.fname.value=="" || !theForm.fname.value.match(/[^\s]/))
    document.getElementById("error1").innerHTML = (error1)?"enter first Name?":"";
    var error2 = (theForm.lname.value=="" || !theForm.lname.value.match(/[^\s]/));
    document.getElementById("error2").innerHTML = (error2)?"enter last Name":"";
    return !error1 && !error2
}

并且拥有

<form onsubmit="return ValidateForm(this)">
<table>
  <tr>
    <td>First Name: <input type="text" name="fname" id="letters"  /><span id="error1" style="color:red;"></span></td>
  </tr>
  <tr>  
    <td>Last Name:  <input type="text" name="lname"  id="letters1" /><span id="error2" style="color:red;"></span></td>
  </tr>
</table>
<input type="submit" value="submit" name="Submit" />
</form>

【讨论】:

  • 耶 - 再问一个问题即可获得 10K 代表
【解决方案2】:

那是因为你使用了return,它会立即退出函数。

您应该保留一个变量,例如 var valid,最初设置为 true,当发生错误时,将其设置为 false,现在您使用 return false

然后,在函数的最后,使用return valid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    相关资源
    最近更新 更多