2010-09-26 4 views
7

Так что я превращающий «редактировать» форму в ajaxForm со следующим:jQuery Форма плагина - как сделать ajaxForm() "live"?

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

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

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

ответ

7

Вы можете включать 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 
}); 

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

+1

Хммм, с что второй, разве не хватает какой-то информации. в конце? Это как бесконечная избыточность, не так ли? – asfsadf

+0

О, я вижу, что вы говорите ... ну, вы могли бы просто сделать еще одну функцию ... плохое обновление – prodigitalson

+0

Мой мозг в узлах. Откуда берутся 4 параметра? Javascript совершенно чужд мне. Благодарю. – asfsadf

11
$('#myFormId').live('submit', function() { 
    // submit the form 
    $(this).ajaxSubmit(); 
    // return false to prevent normal browser submit and page navigation 
    return false; 
}); 

Sligtly модифицирована пример ajaxSubmit из http://jquery.malsup.com/form/#api.

2

попробовать этот

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

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

делегации

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

// prepare all existing and future forms for ajax submission 
$('form').ajaxForm({ 
    delegation: true 
}); 
+0

. Можете ли вы предоставить ссылку на документацию, где вы ее нашли? Я искал в http://www.malsup.com/jquery/form/ и не было даже слова 'делегация' – user907860

+0

https://github.com/malsup/form – younes0

+0

Действительно простое решение, сработало для меня, спасибо вы. – jonaglon

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