2015-12-21 54 views
1

我設計了一個聯繫表單,除了一件事外,它工作得很好。只要有人沒有填寫字段,或者輸入的電子郵件地址無效,就會停止發送表單,但如果您嘗試再次輸入信息並點擊發送,它什麼也不做。如何在不清除輸入的信息的情況下再次發送表單?獲取表單以重置

形式可瀏覽:

http://sundayfundayleague.com/contact

沒有人有任何想法,我怎麼能做到這一點?

形式:

<form action="" method="post" id="mycontactform" > 
    <input type="text" class="inputbar" name="name" placeholder="Full Name" required> 
    <input type="email" class="inputbaremail" name="email" placeholder="Email" required> 
    <textarea rows="4" cols="50" name="message" class="inputbarmessage" placeholder="Message" required></textarea> 
    <label for="contactButton"> 
     <input type="button" class="contactButton" value="Send Message" id="submit"> 
    </label> 
</form> 

的Jquery:

$(document).ready(function(){ 

       $('#submit').click(function(){ 

        $.post("contactSend.php", $("#mycontactform").serialize(), function(response) { 
         if (response == 'Your email was sent!') { 
          $('#contactMessageStatus').append(response); 
          $('#contactMessageStatus').addClass("contactSuccess"); 
          $('html, body').animate({ 
           scrollTop: $("#contactMessageStatus").offset().top 
          }, 2000); 
          $('#contactMessageStatus').html(response); 
          $('#contactMessageStatus').delay(5500).fadeOut(400); 
         } 
         else { 
          $('#contactMessageStatus').append(response); 
          $('#contactMessageStatus').addClass("contactFail"); 
          $('html, body').animate({ 
           scrollTop: $("#contactMessageStatus").offset().top 
          }, 2000); 
          $('#contactMessageStatus').html(response); 
          $('#contactMessageStatus').delay(5500).fadeOut(400); 
         } 
        }); 
        return false; 
       }); 
      }); 

PHP腳本的形式發送:

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 

$to = '[email protected]'; 
$subject = 'SFL Contact Form Submitted'; 
$message = 'FROM: '.$name. "<br>" . ' Email: '.$email. "<br>" . 'Message: '.$message; 
$headers = 'From: [email protected]' . "\r\n"; 

if (!empty($email)) { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 

     //Should also do a check on the mail function 
     if (mail($to, $subject, $message, $headers)) { 
      echo "Your email was sent!"; // success message 
     } else { 
      echo "Mail could not be sent!"; // failed message 
     } 

    } else { 
     //Invalid email 
     echo "Invalid Email, please provide a valid email address."; 
    } 

} else { 
    echo "Email Address was not filled out."; 
} 

UPDATE: 你的意思是這樣的,加上消息面?

if (!empty($email)) { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 

    //Should also do a check on the mail function 
    if (mail($to, $subject, $message, $headers)) { 
     echo "Your email was sent!"; // success message 
    } else { 
     echo "Mail could not be sent!"; // failed message 
    } 
    if($name!== ''){ /*success*/ 
    } else { echo "Please enter a name"; 
    } 

} else { 
    //Invalid email 
    echo "Invalid Email, please provide a valid email address."; 
} 
+0

發生在所有的信息是什麼? – FirstOne

+0

它實際上發送的響應,只是它不更新頁面,說它是成功的。如果您查看瀏覽器的網絡檢查工具,您可以看到它在點擊發送消息時發出請求,並且響應的主體是「您的電子郵件已發送!」 –

+0

消息似乎表示它已成功發送,但聯繫表單不會回到空白狀態,我想這也是一個問題。 – Becky

回答

2

您需要再次使狀態可見,因爲它已被前面的錯誤淡出。

嘗試

$(document).ready(function(){ 

    $('#submit').click(function(){ 
     $.post("contactSend.php", $("#mycontactform").serialize(), function(response) { 
      if (response == 'Your email was sent!') { 
       $('#contactMessageStatus').addClass("contactSuccess"); 
       $('html, body').animate({ 
        scrollTop: $("#contactMessageStatus").offset().top 
       }, 2000); 
       $('#contactMessageStatus').html(response); 
       $('#contactMessageStatus').show(); 
       $('#contactMessageStatus').delay(5500).fadeOut(400, function(){ $(this).removeClass("contactSuccess"); }); 
       $('#mycontactform').trigger('reset'); 
      } 
      else { 
       $('#contactMessageStatus').addClass("contactFail"); 
       $('html, body').animate({ 
        scrollTop: $("#contactMessageStatus").offset().top 
       }, 2000); 
       $('#contactMessageStatus').html(response); 
       $('#contactMessageStatus').show(); 
       $('#contactMessageStatus').delay(5500).fadeOut(400, function(){ $(this).removeClass("contactFail"); }); 
      } 
     }); 
     return false; 
    }); 
}); 

至於額外的錯誤信息:如果您在一審時正確填寫

if (!empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    if($name!== ''){ 
      //Should also do a check on the mail function 
      if (mail($to, $subject, $message, $headers)) { 
       echo "Your email was sent!"; // success message 
      } else { 
       echo "Mail could not be sent!"; // failed message 
      } 
    } else { 
      echo "Please enter a name"; 
    } 
} else { 
    //Invalid email 
    echo "Invalid Email, please provide a valid email address."; 
} 
+0

所以,像這樣'if(response =='Your email was sent!'){$('#contactMessageStatus')。show(); $('#contactMessageStatus')。append(response); $('#contactMessageStatus')。addClass(「contactSuccess」); ('html,body')。animate({scrollTop:$(「#contactMessageStatus」)。offset()。top },2000); $('#contactMessageStatus')。html(response); $('#contactMessageStatus')。delay(50).fadeOut(40); } @ – Becky

+0

@Becky這應該做到這一點,可能想要在任何情況下,但是 –

+0

我試着添加它,它沒有做任何不同的事情。 – Becky