0

jqueryを使用して部分的なフォームをレンダリングしています

$('.actCell').click(createClick);
function createClick() {
    var create = $(this).attr("create");
    $('#'+create).slideToggle();
    $.get('/policies/new', function(data) {

    });
}

次に、フォームを送信する別の機能がありますが、送信は機能しません(送信機能がなく、レールの方法を実行しています)

$("#new_policy").submitWithAjax();
jQuery.fn.submitWithAjax = function () {
    this.submit(function () {
        $('#createPolicy').slideToggle();
        $.post(this.action, $(this).serialize(), null, "script");
        return false;
    })
    return this;
};

上記の関数は、部分的な形式をレンダリングする関数の使用をやめると機能します。どんな助けでも非常に役に立ちます。ありがとう

4

2 に答える 2

2

フォームは動的であるため、委任されたイベント ハンドラーを使用する必要があります。

jQuery.fn.submitWithAjax = function () {
    $(document).on('submit', this.selector, function () {
        $('#createPolicy').slideToggle();
        $.post(this.action, $(this).serialize(), null, "script");
        return false;
    });
    return this;
};

プラグイン内でthis.selectorは、渡されたセレクターが文字列 (この場合は ) として渡される#new_policyため、それを使用するとon()、イベントがドキュメントに委任され、セレクターでフィルター処理されます。

于 2013-07-10T14:58:07.800 に答える