8

ページの作成中にJavaScriptを使用してカーソルをビジーに変更し、ajax呼び出しを行う方法を理解しています。

ただし、ajax を使用しないページがあり、ポストバックを使用してページをリロードします。ただし、負荷はデータ集約型であり、数秒かかります。この間、ユーザーはページをクリックすることができます。ユーザーがページをクリックしようとしないように、カーソルを「待機中」に変えたい。

たとえば、ポストバックを引き起こすドロップダウンがいくつかあります。選択すると、ページが 3 秒間読み込まれます。ロード中は、ページがリロードされるまで、ユーザーが 2 番目のドロップダウンで選択を試行しないように、カーソルを待機状態にしたいと考えています。

これは可能ですか?

追加情報: (私のセットアップの簡易版)

私はマスターページを持っています:

<form id="form1" runat="server">
<table width = "100%" bgcolor="White">
<tr><td>
<h3><asp:ContentPlaceHolder id="MAIN" runat="server"></asp:ContentPlaceHolder></h3>
</tr></td>
</table>
</form>
<script type="text/javascript">
    function cursorwait(e) {
        document.body.style.cursor = 'wait';
    }

    var fm = document.getElementById('<% =form1.ClientID %>');
    if (fm.addEventListener) {
        fm.addEventListener('submit', cursorwait, false);
    }
    else {
        fm.attachEvent('onsubmit', cursorwait);
    }
</script>

次に、マスター ページを使用するページ:

<asp:Content ID="Content1" ContentPlaceHolderID="MAIN" Runat="Server">
<table runat=server id="tb_simple_search_table" cellpadding = 0 cellspacing = 0>
<tr><td>
    <asp:DropDownList...
    <asp:DropDownList...
</td></tr>
</table>
</asp:content>
4

3 に答える 3

6

これが最善または最も効率的な方法であるかどうかはわかりませんが、ボタンをクリックした後にページがビジーであることを示すようにカーソルを変更したい場合は、次の jQuery でうまくいくはずです。

$(document).ready(function() {
    $(".button").click(function() {
        $("*").css("cursor", "wait");
    });
});
于 2010-10-29T16:14:29.110 に答える
5

フォームのsubmitイベントにハンドラーを追加できます。

CSS

    .wait, .wait * { cursor: wait; }

JavaScript

function cursorwait(e) {
    document.body.className = 'wait';
}

var fm = document.getElementById('<% =form1.ClientID %>');
var proxySubmit = fm.onsubmit;

fm.onsubmit = function () {
    cursorwait();
    if (proxySubmit) {
        proxySubmit.call(fm);
    }
}

ここではsubmit()、ポストバックが発生したときにドロップダウンが行うように、js で呼び出された場合にメソッドが呼び出されるようにしています。これにより、フォーム送信の他のインスタンスもキャッチされます。

于 2010-10-29T16:17:00.810 に答える