2015-09-28 64 views
1

我有一个这样的形式。jquery fadeIn和fadeOut不工作之前点击

<form method="post" action="contact-post.php" id="contact_form" name="contactForm"> 
        <div class="left_form"> 
         <div> 
          <span><label>NAME</label></span> 
          <div id='name_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
          <span><input name="name" id="name" type="text" class="textbox"></span> 
         </div> 
         <div> 
          <span><label>E-MAIL</label></span> 
          <div id='email_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
          <span><input name="email" id="email" type="text" class="textbox" required></span> 
         </div> 
         <div> 
          <span><label>PHONE</label></span> 
          <div id='phone_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
          <span><input name="phone" id="phone" type="text" class="textbox"></span> 
         </div> 
        </div> 
        <div class="right_form"> 
         <div>       
          <span><label>SUBJECT</label></span> 
          <div id='message_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
          <span><textarea name="message" id="message" required> </textarea></span> 
         </div> 
         <div id='mail_success' class='success' style="background-color:#BFD6BF;text-align:center;margin-bottom:5px;">Your message has been sent successfully.</div> 
         <div id='mail_fail' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Sorry, error occured this time sending your message.</div> 
         <div id="submit"> 
          <span><input type="submit" id="send_message" name="submit" value="Submit" class="myButton"></span> 
         </div> 
        </div> 
        </form> 

并且我为它调用了一个.js文件。

$(document).ready(function(){ 
    $('#send_message').click(function(e){ 

     //Stop form submission & check the validation 
     e.preventDefault(); 

     // Variable declaration 
     var error = false; 
     var name = $('#name').val(); 
     var email = $('#email').val(); 
     var subject = $('#phone').val(); 
     var message = $('#message').val(); 

     // Form field validation 
     if(name.length == 0){ 
      var error = true; 
      $('#name_error').fadeIn(500); 
     }else{ 
      $('#name_error').fadeOut(500); 
     } 
     if(email.length == 0 || email.indexOf('@') == '-1'){ 
      var error = true; 
      $('#email_error').fadeIn(500); 
     }else{ 
      $('#email_error').fadeOut(500); 
     } 
     if(subject.length == 0){ 
      var error = true; 
      $('#phone_error').fadeIn(500); 
     }else{ 
      $('#phone_error').fadeOut(500); 
     } 
     if(message.length == 0){ 
      var error = true; 
      $('#message_error').fadeIn(500); 
     }else{ 
      $('#message_error').fadeOut(500); 
     } 

     // If there is no validation error, next to process the mail function 
     if(error == false){ 
      // Disable submit button just after the form processed 1st time successfully. 
      $('#send_message').attr({'disabled' : 'true', 'value' : 'Sending...' }); 

      /* Post Ajax function of jQuery to get all the data from the submission of the form as soon as the form sends the values to email.php*/ 
      $.post("contact-post.php", $("#contact_form").serialize(),function(result){ 
       //Check the result set from email.php file. 
       if(result == 'sent'){ 
        //If the email is sent successfully, remove the submit button 
        $('#submit').remove(); 
        //Display the success message 
        $('#mail_success').fadeIn(500); 
       }else{ 
        //Display the error message 
        $('#mail_fail').fadeIn(500); 
        // Enable the submit button again 
        $('#send_message').removeAttr('disabled').attr('value', 'Send The Message'); 
       } 
      }); 
     } 
    });  
}); 

和一个contact-post.php文件是。

<?php 
include('config.php'); 
if (isset($_POST['submit'])) { 
$name=$_POST['name']; 
$mail=$_POST['email']; 
$phone=$_POST['phone']; 
$msg=$_POST['message']; 
function test_input($data) { 
$data = trim($data); 
$data = stripslashes($data); 
$data = htmlspecialchars($data); 
return $data; 
} 
test_input($name); 
$query="INSERT INTO `inquiry` (id,name,contact,email,query) values ('','$name','$phone','$mail','$msg')"; 
$qur=mysql_query($query); 
    if ($qur) { 
     echo 'sent'; 
    } 
    else { 
     echo 'failed'; 
    } 
} 
?> 

我的问题是,当我刷新页面时,它的显示是这样的。

enter image description here

我想,所有的消息不应该点击提交button.please帮我面前显示。

回答

2

更新(添加段):

.error , .success 
 
{ 
 
    display:none; 
 
}
<form method="post" action="contact-post.php" id="contact_form" name="contactForm"> 
 
        <div class="left_form"> 
 
         <div> 
 
          <span><label>NAME</label></span> 
 
          <div id='name_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
 
          <span><input name="name" id="name" type="text" class="textbox"></span> 
 
         </div> 
 
         <div> 
 
          <span><label>E-MAIL</label></span> 
 
          <div id='email_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
 
          <span><input name="email" id="email" type="text" class="textbox" required></span> 
 
         </div> 
 
         <div> 
 
          <span><label>PHONE</label></span> 
 
          <div id='phone_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
 
          <span><input name="phone" id="phone" type="text" class="textbox"></span> 
 
         </div> 
 
        </div> 
 
        <div class="right_form"> 
 
         <div>       
 
          <span><label>SUBJECT</label></span> 
 
          <div id='message_error' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Please enter your name.</div> 
 
          <span><textarea name="message" id="message" required> </textarea></span> 
 
         </div> 
 
         <div id='mail_success' class='success' style="background-color:#BFD6BF;text-align:center;margin-bottom:5px;">Your message has been sent successfully.</div> 
 
         <div id='mail_fail' class='error' style="background-color:#FFBCBB;text-align:center;margin-bottom:5px;">Sorry, error occured this time sending your message.</div> 
 
         <div id="submit"> 
 
          <span><input type="submit" id="send_message" name="submit" value="Submit" class="myButton"></span> 
 
         </div> 
 
        </div> 
 
        </form>

您可以执行下列操作之一:

设置errorsuccess类显示为无,因为它们会被显示使用fadeIn函数。

.error , .success 
{ 
    display:none; 
} 

或者

您可以隐藏在加载<div> s的jQuery的如下:

$(document).ready(function(){ 

    $('.error , .success').hide(); 

    ..... 
}); 

我想第一个解决方案将是一个更好的方法,因为该元素将无法查看完全是因为在JS之前加载CSS(假设这是您加载文件的顺序),而在第二种方法中,元素将在jQuery加载并隐藏它们之前可见。

+0

我检查两个,但它不适用于SUBJECT。 –

+0

我已经添加了一个片段,确保没有任何其他内容通过CSS在这些元素上发挥作用,并覆盖您尝试设置的内容。 – KAD

0

添加下面的样式来隐藏错误/成功消息。

#mail_fail, #mail_success{ 
display : none; 
}