表单验证:对同一脚本进行多次检查会产生错误

时间:2009-02-28 20:34:30

标签: php ajax

我创建了一个脚本,用于检查电子邮件是否有效。我有另一个功能,它检查是否采用了用户名。当检查两个文本框时,我得到“页面上的错误”,如果在那里检查它们就可以正常工作。

以下是我的代码

<script type="text/javascript">
function AjaxFunction()
{
var httpxml;
try
{
// Firefox, Opera 8.0+, Safari
httpxml=new XMLHttpRequest();
}
catch (e)
{  
// Internet Explorer
try
{
httpxml=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
 try
{
httpxml=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
function stateck() 
{
if(httpxml.readyState==4)
{
document.getElementById("msg").innerHTML=httpxml.responseText;

}
}

httpxml.open("GET",ajax.php,true);
httpxml.send(null);
}
</script>

<form name=form action=''>
    Username <input type=text name=username onBlur="AjaxFunction();"><br><div id="msg"></br></div><br>
     Email Address<input type=text name=email onBlur="AjaxFunction();"><div id="msg"></div>
<br>
<input type=submit value=Submit >
</form> 

这是我的ajax.php文件....注意检查的功能不在这个页面上,我只是使用echo $ username作为一个不工作的例子。

<?

$username=$_GET['username']; 
echo $username;

$email = $_GET['email'];
if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$",     $email)){
echo "<font color=red> Invalid email</font>";
}else{
echo "<font color=green> Valid Email</font>";} 
?> 

谢谢=)

1 个答案:

答案 0 :(得分:2)

我没有检查,但我认为具有相同ID的两个div是导致问题的原因。此外,您可能还想考虑在JavaScript函数中进行电子邮件验证。

/编辑:我在你的代码中注意到了这一点:

<br><div id="msg"></br></div><br>

你不应该像这样混淆HTML元素。考虑使用HTML验证器,它将为您节省很多麻烦。