2011-06-29 48 views
8

我在W3Schools中找到这个代码。这是关于使用Javascript的表单验证。使用JavaScript形式验证到php

当用户录制错误的邮件格式时,会出现警告。

当我检查我在表格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> 

在此先感谢。

阿里

+3

W3Schools不可靠:[见W3Fools](http://w3fools.com/) – mc10

回答

7

您无法从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会有诀窍。

3

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

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

3

最简单的事情就是做功能中的显示。喜欢的东西更换警报: -

的document.getElementById( “errormessage的”)的innerHTML = “没有有效 的e-mail地址”。

您还需要在您的HTML中使用errormessage标识的DIV。

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

,并在您的标记添加:

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

我不会用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> 

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