1

ajax.beginform または ajax.actionLink を介して作成された ajax リクエストがあるたびに、targetupdateid を読み取ることができる ajax.start 関数で開始して、blockui と開発者は、この ajax.start について気にする必要はありません。このコードを使用しようとしましたが、機能しません。

$(document).ajaxStart(function (xhr, setting) {
    console.log(this.activeElement);
    if (this.activeElement.type == 'submit') {
        activeElement = this.activeElement.form.attributes["data-ajax-update"].value;

    } else {
       / activeElement = this.activeElement.attributes["data-ajax-update"].value;
    }
    if (activeElement != null) {
        $(activeElement).blockUI();
    }

});

どんな助けでも大歓迎です。

4

2 に答える 2

1

これを試して

   <div id="mainbody">
   </div>  

    <div id="SomeId" style="display:none">

        // put you style to block the UI here 
        // or put loader image
        <img src="@Url.Content("~/Content/themes/base/images/ajax_loader_big.gif")" alt="" />
    </div>


    @Ajax.BeginForm("Index", "Search", new AjaxOptions { UpdateTargetId = "mainbody", HttpMethod = "Post", LoadingElementId = "SomeId" })

UIをブロックするローダー画像でAjax-Loaderまたはいくつかのcssスタイルを使用できます。ajax機能が完了するまでUIをブロックするLoadingElementIdでそのdiv IDをpaasする必要があります 。

于 2012-11-01T13:49:28.487 に答える
0

解決策に感謝しますが、クリックにリスナーを追加して解決する UpdateTargetId をブロックしたいと思います。

  var activeElement,
    targetElement,
    callbackfunc = function (event) {
        activeElement = event.target || event.srcElement;
    };
window.addEventListener('click', callbackfunc, true);
$(document).ajaxStart(function () {if (activeElement !== null && activeElement !== undefined) {
        if (activeElement.type == 'submit') {
            targetElement = activeElement.form.attributes["data-ajax-update"].value;
        }
        if (activeElement.tagName == 'A') {
            targetElement = activeElement.attributes["data-ajax-update"].value;
        }
    }

    if (targetElement !== undefined || targetElement !== null) {
        $(targetElement).block({
            showOverlay: false,
            css: { border: '0px', width: '40px', height: '40px' },
            message: '<div class="progress"><div>'
        });
    }

});
于 2012-11-02T09:13:02.093 に答える