2013-09-02 3 views
1

Я делаю форму запроса. Я новичок в jQuery. после чтения плагина проверки jquery и ajax я написал следующий код. этот код сначала проверяет форму и затем передает форму через ajax. если я отправлю форму, отправьте ее дважды. результат приходит два раза Я не могу получить ошибку.Форма отправки дважды

<script> 
$(document).ready(function() { 
    $('#contactForm').validate({ 
     rules: { 
      name: { 
       required: true 
      }, 
      email: { 
       required: true, 
       email: true 
      }, 
      address: { 
       required: true 
      }, 
      message: { 
       required: true 
      }, 
      security: { 
       required: true 
      } 
     }, 
     messages: { 
      name: { 
       required: '* Please Enter Your Name.' 
      }, 
      email: { 
       required: "* Please Enter Your E-mail ", 
       email: "* Please enter proper E-mail " 
      }, 
      address: { 
       required: "* Please enter address." 
      }, 
      message: { 
       required: "* Please enter Enquiry" 
      }, 
      security: { 
       required: "* Please enter Security code" 
      } 
     }, 
     submitHandler: function (form) { 
      // Ajax Submit here 

      // alert($("#contactForm").serialize()); 

      $.ajax({ 
       type: "POST", 
       url: "assets/sendmail.php", 
       data: $("#contactForm").serialize(), 
       success: function (result) { 
        if (result == 'Success') { 
         $("#contactForm").hide(); 
         $("#contact_response").html('<div class="alert alert-success">Thank you for your feedback.</div>'); 
        } else { 
         alert(result); 
        } 
        return false; 
       } 
      }); 
      return false; 
     } 

    }); 
}); 

форма HTML является

<form action="assets/sendmail.php" method="post" name="contactForm" id="contactForm" > 
        <!-- STEP-2 : GENERAL SETTINGS --> 
        <input type="hidden" name="success_page" value="../contact-us?res=thank-you" id="success_page" /><!-- PAGE TO REDIRECT AFTER SUBMIT --> 
        <input type="hidden" name="email_to" value="<?=get_settings('contact_email');?>" id="email_to" /><!-- EMAIL ADDRESS WHERE WE WANT TO RECEIVE EMAIL --> 
        <input type="hidden" name="email_subject" value="Query Recieved" id="email_subject" /><!-- SUBJECT OF THE EMAIL --> 
        <!-- STEP-2 : GENERAL SETTINGS --> 

        <label for="name" class="nameLabel">Name</label> 
         <input id="name" type="text" name="name" /> 
        <label class="control-label">Email address</label> 
         <div class="controls"> 
          <input type="email" name="email" id="email" /> 
          <p class="help-block"></p> 
         </div> 
        <label for="address">Address</label> 
         <input id="address" type="text" name="address" /> 
        <label for="message" class="messageLabel">Enquiry</label> 
         <textarea id="message" name="message" /></textarea> 
        <label >Security Code</label> 
         <img src="classes/CaptchaSecurityImages.php?width=100&amp;height=30&amp;characters=5" alt="captcha" style="vertical-align:bottom;"/>&nbsp;&nbsp;&nbsp;<input id="security" name="security" class="required" type="text" style="width:30%;vertical-align:bottom;margin-bottom:0px;padding-bottom:0px;"/></br> 
        <button type="submit" id="submit" name="submit">Send</button> 
       </form> 
        </script> 
+0

Каков HTML код для формы? – Virendra

+0

Я отредактировал. plz проверить это ... –

+2

Добавьте 'onsubmit = 'return: false;'' в вашу форму, чтобы предотвратить действие отправки по умолчанию. – Virendra

ответ

1

Your HTML & JavaScript code is working.

Однако в вашем OP, появляется, как будто вы окружены как ваш Jquery и ваш HTML в пределах одного набора тегов <script></script> ...

У вас есть <script> тег в начале вашей JavaScript .. ..

<script> 
$(document).ready(function() { 
    $('#contactForm').validate({ 
     rules: { 
      .... 

и у вас есть закрывающий тег </script> в конце вашего HTML ...

  .... 
    </form> 
</script> 

вы не можете сделать это и он, вероятно, сломает всю страницу. Только заключите JavaScript в <script></script> теги ...

<script> 
    $(document).ready(function() { 

     $('#contactForm').validate({ 
      // rules, options, etc. 
     }); 

    }); 
</script> 

Вам также не нужно action="assets/sendmail.php" в пределах вашего <form> тега. У вас уже есть .ajax(), чтобы отправить свои данные в assets/sendmail.php с помощью submitHandler плагина проверки jQuery.


Две другие вопросы, незначительные HTML я заметил ...

1) У вас есть закрывающий тег </br>. This is invalid HTML because there is no such thing. BR is considered an "empty" or "void" tag, так что вы либо просто используете только <br>, либо «самозакрываетесь»: <br />. (обратите внимание на критическое положение косой черты /)

2) Ваш textarea написан следующим образом: <textarea /></textarea>. Это недопустимый HTML, потому что вы не можете «самостоятельно закрыть» textarea, когда он уже имеет закрывающий тег, </textarea>. Вы просто пишете это так: <textarea></textarea>.

DEMO с исправленным HTML и работает JQuery Validation:http://jsfiddle.net/a2xdg/

1

Просто напишите следующую логику в коде PHP:

if(!empty($email)){ 
    @mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); 
} 

Это предотвратит отправку по электронной почте с пустыми значениями.

Смежные вопросы