jQuery Form插件 - 如何使ajaxForm()“直播”?

时间:2010-09-26 03:29:02

标签: jquery forms partial-views

所以我将“编辑”表单转换为ajaxForm,其中包含以下内容:

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

返回相同的表单,必要时可以再次编辑。然而,第二个表单提交不再附加ajaxForm(),这是有道理的。

我如何确保此表单始终是ajaxForm,无论发生了多少次提交,类似于live()函数的工作方式?

4 个答案:

答案 0 :(得分:11)

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

ajax的略微修改示例提交表单http://jquery.malsup.com/form/#api

答案 1 :(得分:8)

来自文档:

<强>委托

如果启用对事件委托的支持,则需要jQuery v1.7 +

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

答案 2 :(得分: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
});

我推荐后者。

答案 3 :(得分:2)

试试这个

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