Плагин jQuery Form - как сделать ajaxForm () «живым»? - PullRequest
8 голосов
/ 26 сентября 2010

Таким образом, я превращаю форму редактирования в ajaxForm со следующим:

$('#reviewForm').ajaxForm({
    success: function (response) {
        $('#bookReview').html(response);
    }
});

Возвращает ту же форму, которую можно отредактировать снова, если это необходимо.Однако ко второй отправке формы больше не прикрепляется ajaxForm (), что имеет смысл.

Как мне убедиться, что эта форма всегда является ajaxForm, независимо от того, сколько отправлений было выполнено,как работает функция live ()?

Ответы [ 4 ]

11 голосов
/ 11 октября 2010
$('#myFormId').live('submit', function() {
    // submit the form
    $(this).ajaxSubmit();
    // return false to prevent normal browser submit and page navigation
    return false;
});

Слегка измененный пример для ajaxSubmit из http://jquery.malsup.com/form/#api.

8 голосов
/ 10 августа 2012

Из документации:

делегирование

true, чтобы включить поддержку делегирования событий, требуется jQuery v1.7 +

// prepare all existing and future forms for ajax submission
$('form').ajaxForm({
     delegation: true
});
7 голосов
/ 26 сентября 2010

Вы можете включить вызов ajaxForm в ответ, например:

<!-- the html for the form -->
<script type="text/javascript">
  $('#reviewForm').ajaxForm();
</script>

, или сделать это как часть функции успеха:

function ajaxify(response, status, xhr, form){
   var review = $('#bookReview').html(response);
   $('form#reviewForm', review).ajaxForm({
      'success': ajaxify
   });
}

$('#reviewForm').ajaxForm({
   'success': ajaxify
});

Я рекомендуюпоследний.

2 голосов
/ 27 апреля 2011

попробуйте

$('#reviewForm').live('submit', function() {
    $(this).ajaxSubmit({
        success:function(){
            $('#bookReview').html(response);
        },
        resetForm:true
    });
    return false;
});
...