所以我将“编辑”表单转换为ajaxForm,其中包含以下内容:
$('#reviewForm').ajaxForm({
success: function (response) {
$('#bookReview').html(response);
}
});
返回相同的表单,必要时可以再次编辑。然而,第二个表单提交不再附加ajaxForm(),这是有道理的。
我如何确保此表单始终是ajaxForm,无论发生了多少次提交,类似于live()函数的工作方式?
答案 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;
});