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;
});
};