使用 javascript 到 php 的表单验证

Posted

技术标签:

【中文标题】使用 javascript 到 php 的表单验证【英文标题】:form validation with javascript to php 【发布时间】:2011-09-25 11:07:19 【问题描述】:

我在 W3Schools 中找到了这段代码。这是关于使用 javascript 进行表单验证的。

当用户磁带错误的邮件格式时,会出现警报。

当我检查我在表单 onsubmit="return validateForm(); 上看到的代码时,函数在错误情况下返回 false。

所以我的问题是如何从 javascript 中获取布尔值以在 php 中使用它来编写错误消息而不是使用消息框。

这是我的代码:

<html>
<head>
    <script type="text/javascript">
    function validateForm()
    
    var x=document.forms["myForm"]["email"].value
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
      
      alert("Not a valid e-mail address");
      return false;
      
    
    </script>
    </head>

    <body>
    <form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
    Email: <input type="text" name="email">
    <input type="submit" value="Submit">
    </form>
</body>

</html>

提前致谢。

阿里

【问题讨论】:

W3Schools 不可靠:See W3Fools 【参考方案1】:
if (..)

   document.getElementByID('error').InnerHTML = "Not a valid e-mail address!";
   return false;

else

   document.getElementByID('error').InnerHTML = "";

并在您的标记中添加:

<span id="error"></span>

【讨论】:

【参考方案2】:

我不会为此使用 PHP。

<html>
<head>
<script type="text/javascript">
function validateForm()

var x=document.forms["myForm"]["email"].value
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  
  document.getElementById('errorMsg').style.display = 'block';
  return false;
  

</script>
</head>

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<input type="submit" value="Submit">
<div id="errorMsg" style="display: none;">Not valid email</div>
</form>
</body>

</html>

这样你就不必回到你的服务器了。

【讨论】:

【参考方案3】:

您无法从 javascript 中获取布尔值。您需要做的是提前准备好一个错误 div。像这样的:

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<div id="error"></div>
<input type="submit" value="Submit">
</form>

添加 css 以隐藏它。然后在您的验证表单中,使用 javascript 更改错误 div 的 HTML。

  if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  
      document.getElementById("error").innerHTML="Not a valid e-mail address";
      return false;
  

"return false;"部分是告诉表单不要提交。正如其他答案中提到的那样,PHP 和 Javascript 没有接口。 PHP是服务器端,Javascript是客户端。他们不互相交谈。但是,它们都可以修改 HTML。请记住,Javascript 总是在浏览器中运行。因此,如果它需要向 PHP 发送内容,您需要使用 AJAX 调用服务器端 PHP 脚本并以这种方式发送信息。然而,大多数时候,当您使用 Javascript 时,需要信息的不是 PHP,而是用户。所以使用 Javascript 来修改 HTML 就可以了。

【讨论】:

【参考方案4】:

最简单的就是在函数中做显示。将警报替换为以下内容:-

document.getElementById("errormessage").innerHTML="无效 电子邮件地址”;

您的 HTML 中还需要一个带有错误消息 id 的 DIV。

【讨论】:

【参考方案5】:

在使用 AJAX 之外,你不能。请记住,PHP 是一种服务器端语言,而 JavaScript 在浏览器中的客户端上运行。当 PHP 在浏览器中呈现页面时,它已经完成了处理。您需要的是两层验证——JavaScript 验证和 PHP 验证。为什么?因为可以在浏览器中关闭 JavaScript。这使得它作为一种安全措施毫无用处。 JavaScript 验证只能用作增强用户体验的一种方式。

最后,不要去 w3schools。它的很多信息都是无效的(有关更多信息,请参见网站http://www.w3fools.com)。相反,请使用 Mozilla 的开发者网络:https://developer.mozilla.org/en-US/learn/

【讨论】:

以上是关于使用 javascript 到 php 的表单验证的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 验证后的表单提交

使用 javascript 与 php 进行表单验证

将变量从 PHP 传递到 javascript 并传递到 html 表单

验证 php 表单 - 如何在表单上显示错误消息

我可以只使用 jQuery 验证还是需要 PHP? [关闭]

php js表单验证问题