2015-04-23 5 views
0

На моем index.php страница, атрибут действия формы 'target.php'. Я использую jQuery Valdiate для проверки формы.jQuery Validate make submit in заданный div

<form action="target.php" method="post" class="contact-validate"> 
    <div> 
     <div id="sent"></div> 
     <input type="text" placeholder="Przedstaw się" name="name" id="name" /> 
     <input type="text" placeholder="Miejscowość" name="city" id="city" /> 
     <button type="submit" id="submit">Send form *</button> 
    </div> 
</form> 

Проблема заключается в том, что после правильной проверки, форма действия выполняется другая страница, но мне нужно это действие можно выполнить в #sent делах.

Вот код JQuery

<script> 
jQuery('.contact-validate').validate({ 
    rules: { 
     "name": { 
      required: true 
     }, 
     "city": { 
      required: true 
     } 
    }, 
    submitHandler: function(form) { 
     form.submit(); 
    } 
}); 
</script> 

Я не знаю, что мне нужно добавить в «submitHandler»

+1

... для добавления формы Ajax, например. – Regent

+0

см. Http://api.jquery.com/event.preventdefault/ –

+0

Итак, у jquery Validate нет собственной возможности сделать это? Мне нужно использовать ajax? – X9DESIGN

ответ

0

Вы не можете использовать form.submit(), если вы хотите, чтобы страницы, остающейся после отправки формы , Вместо этого вы можете использовать ajaxSubmit() функцию JQuery, как это,

HTML

<form action="target.php" id="theform" method="post" class="contact-validate"> 
    <div> 
     <div id="sent"></div> 
     <input type="text" placeholder="Przedstaw się" name="name" id="name" /> 
     <input type="text" placeholder="Miejscowość" name="city" id="city" /> 
     <button type="submit" id="submit">Send form *</button> 
    </div> 
</form> 

Javascript

<script> 
jQuery('.contact-validate').validate({ 
    rules: { 
     "name": { 
      required: true 
     }, 
     "city": { 
      required: true 
     } 
    }, 
    submitHandler: function(form) { 
     $("#theform").ajaxSubmit({url: 'target.php', type: 'post'}); 
     $("#theform").submit(function(e){ // I think you need to prevent the actual (normal without ajax) form submitting. 
      e.preventDefault(); 
     }); 
    } 
}); 
</script> 
+0

Параметр 'submitHandler'' .validate' предотвратит отправку, если вы вернете false, поэтому вы можете сделать это вместо добавления в форму другого обработчика события 'submit'. – Ryley

0

Чтобы предотвратить формы из представления, вы можете использовать либо

//(jQuery) prevent default functionality of the button 
e.preventDefault(); 

или

//(javascript) return from the method so it does not submit. 
return false; 

Я не очень уверен в более позднем. дайте мне знать, как только вы попробуете.

Cheers !!

+0

Второй вариант будет работать. – Ryley

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