2013-10-30 99 views
0

所以我有驗證第一個名稱字段的JavaScript代碼,一旦我已經這樣做了,我添加更多的驗證。PHP/JavaScript的電子郵件形式和驗證

所以基本上如果該字段沒有填寫,返回false。 如果返回true並繼續發送email.php發送郵件。唯一的問題是它不發送電子郵件到設定的地址。我對我出錯的地方感到困惑。

當字段爲空,並且有輸入時,JavaScript正在工作。幫幫我。

PS:爲了保護隱私,我刪除了電子郵件地址。

的JavaScript上contact.html:

<script> 

    function validateForm() { 


      if (document.forms['email'].fname.value == ""){ 
      alert("First name must be filled out"); 
      return false; 
      } 
      else{ 
      alert("Thank you! Your message was recieved!"); 
      return true;      
      } 
    }; 



</script> 

上contact.html HTML表單

<form id="email" name="email" onsubmit="return validateForm(this)" action="email.php" method="post" > 

     <div id="form_fname"> 
     <label for="fname"><img src="images/firstname.png" width="94" height="17" alt="first name" /></label> 
     <input type="text" name="fname" id="fname" /> 
     </div> 

     <div id="form_lname"> 
     <label for="lname"><img src="images/lastname.png" width="89" height="17" alt="last name" /></label> 
     <input type="text" name="lname" id="lname" /> 
     </div> 

     <div id="form_email"> 
     <label for="email"><img src="images/email.png" width="53" height="17" alt="email" /></label> 
     <input type="text" name="email" id="email" /> 
     </div> 

     <div id="form_message"> 
     <label for="Message"><img src="images/message.png" width="77" height="17" alt="message" /></label> 
     <textarea name="message" id="message" cols="45" rows="5"></textarea> 
     </div> 

     <div id="form_submit"> 
     <input type="submit" name="submit" id="submit" value=""/> 
     </div> 

     </form> 

腓在email.php

<?php 
if(isset($_POST['email'])) { 

// Email and subject. 
$email_to = "emailaddress"; 
$email_subject = "Mint Makeup & Beauty Enquiry";   

$fname = $_POST['fname']; // required 
$lname = $_POST['lname']; // required 
$message = $_POST['message']; // required 
$email_from = $_POST['email']; // required 

// create email content 
$email_content = "From:"." ".$fname." ".$lname."\n"."Email:"." ".$email_from."\n"."Message:"." ".$message; 

//mail 
mail($email_to, $email_subject, $email_content); 

} 
//return to contact page after submit. 
header("location:contact.html"); 
?> 

回答

0

在您的形式ID = 「電子郵件」 與輸入ID = 「電子郵件」

發生衝突

您可以使用HTML5屬性進行表單驗證(在支持HTML5的瀏覽器中)

http://www.the-art-of-web.com/html/html5-form-validation/#.UnDpBHMW3eU

代碼

<?php 
if(isset($_POST['submit'])) { 
    print_r($_POST); 
    die; 
    $email_to = "emailaddress"; 
    $email_subject = "Mint Makeup & Beauty Enquiry";   

    $fname = $_POST['fname']; // required 
    $lname = $_POST['lname']; // required 
    $message = $_POST['message']; // required 
    $email_from = $_POST['email']; // required 

    // create email content 
    $email_content = "From:"." ".$fname." ".$lname."\n"."Email:"." ".$email_from."\n"."Message:"." ".$message; 
    mail($email_to, $email_subject, $email_content); 
} 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<script type="text/javascript"> 
function validateForm() { 
    var error = false; 
    var error_string = 'Please correct the following errors:\n\n'; 
    if (document.getElementById('fname').value == ""){ 
     error_string += "--> First name must be filled out.\n"; 
     error = true; 
    } 
    if (document.getElementById('lname').value == ""){ 
     error_string += "--> Last name must be filled out.\n"; 
     error = true; 
    } 
    if (document.getElementById('email').value == ""){ 
     error_string += "--> Email must be filled out.\n"; 
     error = true; 
    }  
    if(error){ 
     alert(error_string); 
     return false; 
    } else { 
     return true; 
    } 
} 
</script> 
</head> 
<body> 
<form onsubmit="return validateForm(this)" action="" method="post" > 

    <div id="form_fname"> 
    <label for="fname"><img src="images/firstname.png" width="94" height="17" alt="first name" /></label> 
    <input type="text" name="fname" id="fname" /> 
    </div> 

    <div id="form_lname"> 
    <label for="lname"><img src="images/lastname.png" width="89" height="17" alt="last name" /></label> 
    <input type="text" name="lname" id="lname" /> 
    </div> 

    <div id="form_email"> 
    <label for="email"><img src="images/email.png" width="53" height="17" alt="email" /></label> 
    <input type="text" name="email" id="email" /> 
    </div> 

    <div id="form_message"> 
    <label for="Message"><img src="images/message.png" width="77" height="17" alt="message" /></label> 
    <textarea name="message" id="message" cols="45" rows="5"></textarea> 
    </div> 

    <div id="form_submit"> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
    </div> 

    </form> 
    </body> 
    </html> 

我剛纔給你看如何客戶端驗證作品和形式是否正確。你應該總是使用服務器端驗證張貼..

+0

好的,謝謝!我將表格重命名爲emailform,並使用上述答案中的建議,但仍未發送電子郵件。我還從php代碼中移除了if(isset($ _ POST ['emailform']))。 – Lizzeiy

1

嘗試

document.forms["email"]["fname"].value 

代替

document.forms['email'].fname.value 

你也可以得到場這樣:

document.getElementById('fname').value