2012-04-25 14 views
2

私はHTMLフォームをPHPスクリプトに投稿してから、私にフォームの内容をメールします。 私はまた、ページがリロードされないように、javascriptフォームの検証といくつかのjquery ajaxを使用しています。送信後にhtmlフォームを非表示にしますか?

HTML -

<form action="mail.php" class="contactus" onsubmit="return ValidateRequiredFields();" name="contactus" method="POST"> 
<p class="floatleft" style="width:200px; background-color:#FF0000; line-height:50px; margin:0; padding:0;">Nameeeeee</p> <input class="sizetext" type="text" maxlength="10" name="name"> 
<div style="clear:both"></div> 
<p class="floatleft" style="width:200px;">Email</p> <input class="sizetext" type="text" maxlength="10" name="email"> 
<div style="clear:both"></div> 
<p class="floatleft" style="width:200px;">Telephone</p> <input class="sizetext" type="text" maxlength="10" name="telephone"> 


<p>Priority</p> 
<select name="priority" size="1"> 
<option value="Low">Low</option> 
<option value="Normal">Normal</option> 
<option value="High">High</option> 
<option value="Emergency">Emergency</option> 
</select> 

</select> 
<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br /> 

<br /> 
<input class="buttonstyle" type="submit" value="Send"> 
</form> 

    <div id="formResponse"> 
     </div> 

PHP -

<?php $name = $_POST['name']; 
$email = $_POST['email']; 
$priority = $_POST['priority']; 
$message = $_POST['message']; 
$telephone = $_POST['telephone']; 
$formcontent="From: $name \n Email: $email \n Telephone Number: $telephone \n Priority: $priority \n Message: $message"; 
$recipient = "myemailaddress"; 
$subject = "Contact Form"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
echo "Thank You!"; 
?> 

フォームの検証とAjax - 私が知りたいのですがどのような

<script type="text/javascript" language="JavaScript"> 


var FormName = "contactus"; 



var RequiredFields = "name,email,priority,message"; 



function ValidateRequiredFields() 
{ 
var FieldList = RequiredFields.split(",") 
var BadList = new Array(); 
for(var i = 0; i < FieldList.length; i++) { 
    var s = eval('document.' + FormName + '.' + FieldList[i] + '.value'); 
    s = StripSpacesFromEnds(s); 
    if(s.length < 1) { BadList.push(FieldList[i]); } 
    } 
if(BadList.length < 1) { return true; } 
var ess = new String(); 
if(BadList.length > 1) { ess = 's'; } 
var message = new String('\n\nThe following field' + ess + ' are required:\n'); 
for(var i = 0; i < BadList.length; i++) { message += '\n' + BadList[i]; } 
alert(message); 
return false; 
} 

function StripSpacesFromEnds(s) 
{ 
while((s.indexOf(' ',0) == 0) && (s.length> 1)) { 
    s = s.substring(1,s.length); 
    } 
while((s.lastIndexOf(' ') == (s.length - 1)) && (s.length> 1)) { 
    s = s.substring(0,(s.length - 1)); 
    } 
if((s.indexOf(' ',0) == 0) && (s.length == 1)) { s = ''; } 
return s; 
} 
// --> 
</script> 

    <script type="text/javascript"> 

      $(document).ready(function() { 

       $(".contactus").submit(function() { 

        $.post("mail.php", $(".contactus").serialize(), 

         function(data) { 
          $("#formResponse").html(data); 
         } 
        ); 
        return false; 
       }); 
      }); 
     </script> 

は、それが提出されています後にフォームを非表示にする方法です。

+0

私は同意します。 0%受け入れは受け入れられません。 – Jack

+2

ああ私の謝罪、私はそれを行うために適切なエチケットだったことを全く知らなかった。今終わった。 – andy

答えて

2
$(".contactus").on('submit', function() { 
    $this = $(this); 
    $.post("mail.php", $(".contactus").serialize(), function(data) { 
     $("#formResponse").html(data); 
     $this.hide() 
    }); 
    return false; 
}); 

を試してみてくださいまたはあなたが試みることができる:

$(document).ready(function() { 
    $(".contactus").on('submit', function(e) { 
     e.preventDefault(); 
     $this = $(this); 
     $.ajax({ 
      type: 'POST', 
      url: "mail.php", 
      data: $(".contactus").serialize() 
     }).done(function() { //done will only hide if the submit is successful, using always instead will alway hide the form 
      $this.hide(); 
     }); 
    }); 
}); 
+0

動作しません。フォームは非表示になりません。 – andy

+0

私はjqueryやjavascriptがうまくいかないことに注意してください。 – andy

+0

これはうまくいくはずですが、mail.phpへの投稿が成功した場合にのみ、そのファイルが存在しないか/ pathが間違っていれば、フォームは非表示にならず、メールも送られません。 '.on( 'submit'、... 'は' .submit'と同じです) – Louis

1

$('form.contactus').submit(function() { 
    $(this).hide(); 
}); 
+0

どのようにこれを動作させるか分かりません。 – andy

関連する問題