我正在使用 jQuery 的实时查询插件将动态行为附加到表单元素并创建 ajax 表单。我面临的问题如下:
在提交的响应中,如果我不在元素上再次调用 livequery,则新加载的表单不会获得所需的行为。但是,如果我再次使用 submit 调用 livequery,则表单会多次提交。
实际上,计数每次都会增加。我尝试使用过期。但这根本没有帮助。关于如何实现这一点的任何评论。
我想要做的是创建所有具有类 js-ajax-form 的表单作为通过 ajax 提交的表单。生成的内容也是应该保留相同行为的表单。那就是它必须通过ajax提交。
非常感谢您的指导。
$.fn.fajaxform = function() {
var container = null;
$(this).livequery(
'submit',
function(e) {
var $this = $(this);
container = $this.parent();
$this.ajaxSubmit({
beforeSubmit : function(formData, jqForm, options) {
$('input:file', jqForm[0]).each(function(i) {
if ($('input:file', jqForm[0]).eq(i).val()) {
options['extraData'] = {
'is_iframe_submit' : 1
};
}
});
container.block({
message : '<h1><img src="/img/busy.gif" /> Loading please wait...</h1>'
});
},
success : function(responseText, statusText) {
redirect = responseText.split('*');
if (redirect[0] == 'redirect') {
location.href = redirect[1];
} else if ($this.metadata().container) {
$('.' + $this.metadata().container).html(
responseText);
} else {
$this.parents('div.js-responses').eq(0).html(
responseText);
}
$('.js-ajax-form').each(
function()
{
if (this.expire)
{
this.expire();
}
}
);
$('.js-ajax-form').fajaxform();
container.unblock();
}
});
return false;
});
};