1

jQuery の .load 関数を使用しているときに、一番上までスクロールしないようにしています。私はあなたが使用できるSOを読みましたevent.preventDefault(); event.stopPropagation();これがこの質問へのリンクです。しかし、beginform を使用する場合、ここにはイベントがありません。

また、送信ボタンにクリックイベントを入れようとしましたが、これもうまくいきませんでした。

前もって感謝します!

ビューのコードです。成功すると、関数 closeFancyReservationCancel が呼び出されます。

@using (
    Ajax.BeginForm("Cancel", 
                   "Reservation", 
                   new AjaxOptions { HttpMethod = "POST", 
                                     OnSuccess = "closeFancyReservationCancel"}, 
                   new { id = "cancelForm" }))
    {
        ...
    }
)

そして、これはjQuery関数です

function closeFancyReservationCancel() {
    $.fancybox.close();
    $('#reservationList').load(ResolveUrl('~/Reservation/reservationList'));
}


function ResolveUrl(url) {
if (url.indexOf("~/") == 0) {
    url = baseUrl + url.substring(2);
}
    return url;
}

ここに私のHTMLの一部があります:

<div id="reservationList" class="tblContainer">
    @Html.Action("reservationList", "Reservation")
</div>

アクション reservedList は、テーブルを含むビューを返します。表の本体のみにoverflow: auto;.

編集:詳細情報を追加

予約テーブルのリストを含む div があります。そのリストを表示するために MVC3 を使用しています。キャンセルボタンを押すと.load関数でdivがリロードされます。

編集

ここにテーブルを含む私のHTMLビュー: Pastebin

4

1 に答える 1

1

ロードする前にスクロール量を取得するだけです。そして、ロードが終了した後に同じスクロール量を適用します

function closeFancyReservationCancel() {
    $.fancybox.close();
    var scroll_amount= $('#reservationList').scrollTop();
    $('#reservationList').load(ResolveUrl('~/Reservation/reservationList'),
                          function() {
                              $('#reservationList').scrollTop(scroll_amount);
                          });
}

必要に応じて、額を使用することもできます.scrollLeft()

于 2012-07-16T11:23:29.870 に答える