这是我的表单验证功能:
function validateForm() {
valid = true;
var a=document.forms["checkout"]["fname"].value;
if (a==null || a=="")
{
alert("First name must be filled out");
valid = false;
}
var b=document.forms["checkout"]["lname"].value;
if (b==null || b=="")
{
alert("Last name must be filled out");
valid = false;
}
var c=document.forms["checkout"]["address"].value;
if (c==null || c=="")
{
alert("Address must be filled out");
valid = false;
}
var d=document.forms["checkout"]["email"].value;
if (d==null || d=="")
{
alert("Email address must be filled out");
valid = false;
}
var e=document.forms["checkout"]["email"].value;
if(!validateEmail(e)){
alert("Must be a valid email address");
valid = false;
}
var f=document.forms["checkout"]["phone"].value;
if (f==null || f=="")
{
alert("Phone number must be filled out");
valid = false;
}
var g=document.forms["checkout"]["phone"].value;
if(!validatePhone(g)){
alert("Must be a valid phone number");
valid = false;
}
var h=document.forms["checkout"]["card"].value;
if (h==null || h=="")
{
alert("Credit card info must be filled out");
valid = false;
}
var i=document.forms["checkout"]["card"].value;
if(!validateCard(i)){
alert("Must be a valid credit card number");
valid = false;
}
return valid;
}
function validateEmail(email) {
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.) {2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return pattern.test(email);
}
function validatePhone(phone) {
var ppattern = new RegExp(/^[\d ]+$/);
return ppattern.test(phone);
}
function validateCard(card) {
var cpattern = new RegExp(/(?:\d[ ]?){12,17}\d/);
return cpattern.test(card);
}
表单在到达电子邮件地址之前会正确验证。无论我说什么,都说电子邮件无效。此外,出于某种原因,当它过去只检查一个警报消息时,它会循环显示所有警报消息。
编辑添加php验证:
if(isset($_POST['SubmitForm'])){
if(empty($_POST['fname'])){
echo "First name cannot be empty!<br/><br/>";
return false;
}
if(empty($_POST['lname'])){
echo "Last name cannot be empty!<br/><br/>";
return false;
}
if(empty($_POST['address'])){
echo "Address field cannot be empty!<br/><br/>";
return false;
}
if(empty($_POST['email'])){
echo "Email field cannot be empty!<br/><br/>";
return false;
}
if($_POST['email']){
$email = $_POST['email'];
$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
$match = preg_match($regex,$email);
if(!$match)
echo "Not a valid email address!<br/><br/>";
return false;
}
if(empty($_POST['phone'])){
echo "Phone number cannot be empty!<br/><br/>";
return false;
}
if($_POST['phone']){
$phone = $_POST['phone'];
$reg = '/^[\(]?(\d{0,3})[\)]?[\s]?[\-]?(\d{3})[\s]?[\-]?(\d{4})[\s]?[x]?(\d*)$/';
$pmatch = preg_match($reg, $phone);
if (!$pmatch)
echo "Not a valid phone number!<br/><br/>";
return false;
}
if(empty($_POST['card'])){
echo "Card field cannot be empty!<br/><br/>";
return false;
}
if($_POST['card']){
$card = $_POST['card'];
$match = preg_match("#[0-9]#",$card);
if(strlen($card) < '13')
echo "Card field must be at least 13 digits <br/><br/>";
return false;
if(!$match)
echo "Card number must be numeric<br/><br/>";
return false;
}
if($_POST['month']){
$month = $_POST['month'];
if($month < 05)
echo "Expired credit card";
return false;
}
return true;
$fname = $_SESSION['fname'];
$lname = $_SESSION['lname'];
$email = $_SESSION['email'];
$phone = $_SESSION['phone'];
$representation = json_encode($_SESSION['cart'],JSON_PRETTY_PRINT);
$pfile = fopen("orders.txt","a+");
rewind($pfile);
fwrite($pfile, "\r\n$fname:$lname:$email:$phone:$representation");
fclose($pfile);
}