【发布时间】:2015-01-30 04:21:59
【问题描述】:
<?php
if (isset($_POST['submit']) ) {
//send to database
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<script>
function validateForm() {
var usernameentry = document.forms["registrationform"]["username2"].value;
var passwordentry = document.forms["registrationform"]["password2"].value;
var nameentry = document.forms["registrationform"]["password2"].value;
var emailentry = document.forms["registrationform"]["email"].value;
var atpos = emailentry.indexOf("@");
var dotpos = emailentry.lastIndexOf(".");
if (usernameentry.length < 3 || username.length > 20){
alert("Username must be inbetween 4 and 20 characters");
return false;
}
else if (passwordentry.length < 3 || password.length > 20){
alert("Password must be inbetween 4 and 20 characters");
return false;
}
else if (nameentry.length < 3 || name.length > 45){
alert("Name must be inbetween 4 and 45 characters");
return false;
}
else if (atpos<1 || dotpos<atpos+2 || dotpos+2>=emailentry.length || emailentry.length > 154) {
alert("Not a valid e-mail address");
return false;
}
else
{
return true;
}
}
</script>
</head>
<body>
<form name="registrationform" method="post" action="login.php" onsubmit="return validateForm();">
Name: <input type="text" name="name"/>
<br/>
<br/>
Email: <input type="text" name="email"/>
<br/>
<br/>
Username: <input type="text" name="username2"/>
<br/>
<br/>
Password: <input type="password" name="password2"/>
<br/>
<br/>
<input type = "submit" name = "submit" value = "submit" />
<br/>
<br/>
</form>
</body>
我希望 if 语句的内容仅在使用 JavaScript 验证表单时运行,无论返回的值是真还是假,它都会运行。
我猜我需要做的类似于
if (isset($_POST['submit']) && onsubmit == true)
显然这不对,但我不知道该怎么做。
我知道使用 php 进行验证是一种更合乎逻辑的方法,但我需要演示 JavaScript 的使用。
【问题讨论】:
-
你所写的应该完全符合你的要求。但是,请记住,您不能依赖实际运行的 JavaScript,因为可以从其他位置发布到此页面。但是对于一个简单的解决方案,应该这样做。
-
无需在PHP中添加
"onsubmit",如果onsubmit在前面没有错误时已经运行,当它返回true并继续提交表单时。 -
问题是if语句的内容不管JavaScript返回的值是真还是假都会运行。
标签: javascript php html