2015-02-13 2 views
0

скажем, у меня есть 2 страницы: index.html с этим кодом:Как загрузить и проверить форму с помощью jquery?

<!DOCTYPE html> 
<html lang="fr"> 

<head> 
    <title>test formulaire</title> 
</head> 
<body> 
    <div id="formulaire"> 
    </div> 
    <!-- /#formulaire --> 
    <a href="javascript:montreformulaire();">Montre le formulaire</a> 
    <!-- jQuery --> 
    <script src="js/jquery.js"></script> 
    <script src="js/monscript.js"></script> 
</body> 
</html> 

У меня есть другая страница, которая containts моей формы:

<form name="monformulaire" id="monformulaire" role="monformulaire"> 
<input type="text" name="montexte" id="montexte" value="" /> 
<button id="bouton" type="submit">Let's go man !</button> 
</form> 

У меня есть jquery.js и Personnal сценарий, как это:

function montreformulaire() { 
    alert('ok charge formulaire'); 
    $.get("monformulaire.html", function(data) { 
    var formData = $.parseHTML (data); 
     $("#formulaire").html(formData); 
    }); 
    $('monformulaire').submit(function(event) { 
      alert('formulaire envoyé !'); 
      event.preventDefault(); 
      /* 
      $.ajax({ 
       type: 'POST', 
       url: 'ajoute.php', 
       data: $(this).serialize(), 
       success: function (data) { 
        alert($('form').serialize()); 
        //showMsg(data); 
        showSupportPage(id); 

       }, 
       cache: false 
      }); 
      */ 
    }); 
    $("#montexte").val('toto'); 
} 

моя проблема заключается в том, что когда форма подать Я хочу использовать JQuery представить функцию, но она не работает.

Я не понимаю, почему и как я мог это исправить.

Любая идея приветствуется :-)

Спасибо,

Alex

ответ

0

Очень классический и общий вопрос. Вы делаете вызов ajax для элемента, но вы делаете element.click (...) перед его извлечением, тем самым до того, как он действительно существует.

Поместите $('#monformulaire').submit(function (с #, что вы забыли) внутри функции обратного вызова Ajax, например:

$.get("monformulaire.html", function(data) { // This is done FIRST 
      var formData = $.parseHTML (data); 
      $("#formulaire").html(formData); // this is done THIRD, #monformulaire now exists 
      $('#monformulaire').submit(function(event) {........}) // this is done FOURTH, accessing the element! 
}); 

$('#monformulaire').submit(function(event) {........}) // This is done SECOND and won't do anything because #monformulaire doesn't exist yet 

Добро пожаловать в мир асинхронными языков :)

+0

Отлично, что отлично работает, большое вам спасибо! –

+0

Ницца, пожалуйста, примите и подтвердите свой ответ. –

0

Ваши представить функции не хорошо. Делают это так:

$('[name=monformulaire]').submit(); 

или

$('[name=monformulaire]').submit(function(){ 
    //Do your thing here 
}); 
2

Потому что вы пропустили # при прохождении id на submit обработчик

$('#monformulaire').submit(function(event) { 

      // Your code here.. 
}); 

Другое селектор

Выберите подходящий вариант.

+0

Если это решит проблему, пожалуйста, повысьте его и отметьте как правильный ответ, – void

0

Вы должны использовать $('form[name="monformulaire"]').submit(...)

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