2012-02-10 3 views
1

Я хочу отправить форму, которая принадлежит загруженной странице (я использую load()). Когда я нажимаю на кнопку отправки, ничего не происходит.Отправить форму с загруженной страницы

Html код загруженной страницы:

<form id="my_form" method="post" > 
     *** some inputs *** 
     <input id="submit_button" type="submit" value="Confirm" /> 
    </form> 

JQuery код загруженной страницы:

$("#submit_button").on('click', function() {   

    $('#my_form').submit(function(){ 
     var myForm = $(this);  

     $.ajax({ 
      dataType: 'json',    
      type: "POST", 
      url: "../treatment_page.php", 
      data:myForm.serialize(), 
      success: function(data){ 
        if (data.a == true){ 
          parent.$.colorbox.close(); 
        }else{ 
         alert("Problem!"); 
        }   
      } 
     });     
    return false;  

    }); 

}); 

treatment_page.php это нормально, это относится к моим другим формам не usnig на() , treatment_page.php находится в родительской папке. Все действия jQuery отлично работают в загруженном скрипте страницы, кроме этого представления формы.

+0

что об использовании '.На ('Submit', ...);' –

+0

Перемещение 'submit' обработчик событий за пределами' click' обработчика событий. Затем удалите обработчик события 'click' вместе, поскольку он не нужен (просто привяжите к событию' submit', так как кнопка отправки отправляет форму в любом случае). – Jasper

ответ

5

На кнопки отправки мыши вы просто подключая submit обработчик для образования. Вам не нужен обработчик щелчка кнопки отправки. Просто сохраните этот код на родительской странице, а также отрисуйте этот скрипт вместе с load. Ответ не требуется.

$(document).on('submit', '#my_form', function(){ 
     var myForm = $(this);  

     $.ajax({ 
      dataType: 'json',    
      type: "POST", 
      url: "../treatment_page.php", 
      data:myForm.serialize(), 
      success: function(data){ 
        if (data.a == true){ 
          parent.$.colorbox.close(); 
        }else{ 
         alert("Problem!"); 
        }   
      }, 
      error: function(){ 
       //Error handler 
      } 
     });     
    return false;  

}); 

on вводится в JQuery 1.7, если вы используете старую версию, то вы можете использовать delegate. Попробуй это.

$(document).delegate('#my_form', 'submit', function(){ 
     .... 
     .... 
}); 
+0

Я использую jQuery 1.7 и on () отлично работает с другими действиями. Я пробую ваши решения без успеха. Кроме «успеха», как я могу перехватить исключения ajax? Я хотел бы видеть ошибки, чтобы помочь себе ... – Anon

+0

Вы можете использовать обработчик 'error'. Добавлен обработчик ошибок в моем ответе. – ShankarSangoli

+0

Какая ошибка вы получаете, если используете мой код? Это вызов ajax? – ShankarSangoli

0

Переместите обработчик onSubmit вне обработчика кликов.

$('#my_form').submit(function(){ 
    var myForm = $(this);  

    $.ajax({ 
     dataType: 'json',    
     type: "POST", 
     url: "../treatment_page.php", 
     data:myForm.serialize(), 
     success: function(data){ 
       if (data.a == true){ 
         parent.$.colorbox.close(); 
       }else{ 
        alert("Problem!"); 
       }   
     } 
    });     
return false;  

}); 
+0

привет, поскольку форма была «не для начала», я думаю, вам придется использовать '.on ('submit')' или '.delegate ('submit')' или '.live ('submit')' в зависимости от версии, а затем пытается '.bind ('submit')' к элементу, которого нет там, если форма не была создана с использованием объекта jQuery, который я не думаю, что это было –

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