jQuery, привязывающий отправку формы через имя класса, не работает

#ajax #jquery

#ajax #jquery

Вопрос:

У меня есть вызов jQuery AJAX, который создает и отображает подобную форму в PHP:

 echo '<form class="add_suggested_solution_comment" name="suggest_solution_comment_form" method="post">';
echo '<p><textarea name="suggested_solution_comment" cols=65 rows=6 ></textarea></p>';
echo '<input type="hidden" name="problem_id" value="'.$problem_id.'" />';                                                   echo '<input type="hidden" name="suggestion_id" value="'.$suggested_solution_id.'" />';   
echo '<p><input type="submit" class="button" value="Add Comment"></input></p>';             
echo '</form>';
  

Затем, когда пользователь нажимает на форму, я пытаюсь поймать щелчок в jQuery таким образом, используя атрибут class формы. По определенной причине я не могу использовать атрибут id формы.

Вот как выглядит этот jQuery:

 $('.add_suggested_solution_comment').bind('submit',function()
  

Но по какой-то причине, когда пользователь отправляет форму, jQuery никогда не запускается. Есть идеи, почему?

Спасибо!!

Ответ №1:

Если вы создаете форму form динамически с помощью AJAX, вам необходимо привязать обработчик отправки с помощью live() метода jQuery:

 $('.add_suggested_solution_comment').live('submit', function(){
    alert('form submitted');
    // other code
});
  

Комментарии:

1. было бы что-то вроде этого: $(‘.add_suggested_solution_comment’).live(‘click’,функция()

2. На самом деле функция live работала с директивой submit. Спасибо!

3. @GeekedOut: Смотрите мой пример выше. Если вы пытаетесь перехватить отправку формы, используйте submit . Использование click запускает событие при каждом нажатии на любой элемент формы, а не только при отправке. Я предполагаю, что вы хотите submit .

4. @GeekedOut: Рад, что у вас получилось! Если мой ответ решил вашу проблему, не забудьте пометить его как принятый.

Ответ №2:

Вы запускаете это при загрузке? попробуйте

 $(document).ready(function(){
    $('.add_suggested_solution_comment').bind('submit',function()
});