Отправка форм из ответа Ajax

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

Я использую плагин формы jquery для отправки этих форм с помощью ajax. Проблема, с которой я постоянно сталкиваюсь, заключается в том, что формы не распознаются плагином, поэтому они работают нормально (публикация и перенаправление на ajax/comment.php). После некоторых копаний я думаю, что это связано с тем, что формы загружаются динамически, и скрипт не может их «видеть». Я читал о том, что eval() является возможным решением для правильной работы скрипта. Прямо сейчас код выполняется правильно, если я не использую ajax для заполнения страницы.

 <script>
$(document).ready(function() { 
var options = {  
    url: 'ajax/comment.php',
}; 
$('.commentsubmit').submit(function() { 
    $(this).ajaxSubmit(options); 

    return false; 
}); 
}); 

</script>    

person centree    schedule 29.01.2013    source источник


Ответы (1)


Если формы загружаются динамически, измените .submit на это:

$(document).on('submit', '.commentsubmit', function () {

Это делегирует событие submit любым формам .commentsubmit, которые не могут быть добавлены в DOM во время вызова .on.

В несвязанной заметке используйте e.preventDefault(), а не return false: http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

person Explosion Pills    schedule 29.01.2013
comment
Он по-прежнему перенаправляет на ajax/comment.php - person centree; 30.01.2013
comment
То, что вы написали, сработало. Он запускает форму ajax и перенаправляет, чего раньше не делал. Итак, функция, наконец, запущена, но все еще перенаправляет - person centree; 30.01.2013
comment
Я изменил его обратно, чтобы вернуть false; и он работает правильно. Спасибо - person centree; 30.01.2013
comment
@centree извините, я должен был указать, что вам нужно передать e обратному вызову, как в (function (e) {) - person Explosion Pills; 30.01.2013