Как получить форму или div по имени, которое вызывается при успехе AJAX.BeginForm

Я вызвал Ajax.BeginForm внутри элемента div, поэтому я хочу получить элемент div, в котором находится форма. т.е. я хочу эквивалент

function function1(event){
var table = $(event.target).parents("table");
}

который можно использовать из функции onsuccess Ajax.beginform. Кто-нибудь может здесь помочь?


person SDK    schedule 01.08.2012    source источник


Ответы (2)


Оказалось, что внутри функции onsuccess «это» относится к элементу формы. Так что я мог бы легко использовать,

$(this).find("mydiv");

or

$(this).parent("table").find("mydiv");
person SDK    schedule 01.08.2012
comment
Похоже, его больше нет в MVC4 - person Maksim Vi.; 20.11.2013

MVC4, похоже, сломал его. Ужасно "это" теперь XHR. Чтобы обойти это, используйте этот неприятный хак:

$(function() {

    var lastEvent = null;
    $("body").on("submit", "form[data-ajax=true]", function(e) {

        lastEvent = e;

    });
    window.TagXhrWithEventTarget = function(xhr) {

        xhr.capturedSubmitEvent = lastEvent;

    }

});

и в начальной форме:

@using (Ajax.BeginForm("MyAction", "MyController", new AjaxOptions
{
    HttpMethod = "POST",
    OnSuccess = "ProcessResponse",
    OnBegin = "TagXhrWithEventTarget"
}

а затем в ProcessResponse:

function ProcessResponse(data, status, xhr) {

    var e = xhr.capturedSubmitEvent;
    var control = e.target;
    . . .
person goofballLogic    schedule 17.07.2014