2010-10-29 42 views
8

我瞭解如何使用javascript將頁面製作和ajax調用時的光標更改爲繁忙。將頁面加載時將光標變爲繁忙

但是我有一個頁面不使用ajax,它使用回發來重新加載頁面。然而,負載相當密集,需要幾秒鐘的時間。在此期間,用戶仍然可以點擊該頁面。我想將光標移到「等待」,所以用戶不會嘗試點擊該頁面。

例如,我有一些導致回發的下拉菜單。我做出選擇,頁面加載3秒鐘。當它加載時,我希望光標轉向等待,以便用戶不會嘗試在第二個下拉列表中進行選擇,直到頁面重新加載。

這可能嗎?

附加信息:(簡化我的設置的版本)

我有一個母版:

<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> 
+0

這是那些正在做的過程中,我要等待光標的回傳Dropdownlists。 – kralco626 2010-10-29 17:08:21

+0

我的意思是,真的,任何時候頁面加載它將是很好,如果我可以得到等待光標,不管它爲什麼它正在等待... – kralco626 2010-10-29 17:09:34

回答

5

您可以向窗體的submit事件添加處理程序。如果submit()被稱爲像落JS

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); 
    } 
} 

這裏我們可以確保我們的方法被調用時,它會導致回發下來呢。這也應該抓住表單提交的任何其他實例。

+0

我喜歡這個想法。我將腳本放入了我的主頁面。不過,當行:fm.addEventListener說對象是預期的時候,我得到一個錯誤。我的主頁上有一個名爲form1的表單,但沒有在我的子頁面中。我將如何解決這個問題? – kralco626 2010-10-29 16:35:34

+0

我試過使用var fm = $('#form1');但我在fm.attachEvent('onsubmit',cursorwait)上出現錯誤;說這個opbject不支持這個。 – kralco626 2010-10-29 16:36:08

+0

你是否將腳本放在頁面上的表單之後?使用任何形式的名稱包含您所關心的控件。 '$('#form1')'得到一個jquery對象,而不是一個dom元素。 – lincolnk 2010-10-29 16:41:06

5

我不是確定如果這是最好的或最有效的方法,但如果你想改變光標顯示頁面忙後按鈕點擊下面的jQuery應該做的伎倆:

$(document).ready(function() { 
    $(".button").click(function() { 
     $("*").css("cursor", "wait"); 
    }); 
}); 
+0

偉大的解決方案,不幸的是沒有對我有問題。我不只有一個按鈕可能導致回發,我有幾個對象和許多事件。儘管我使用JQuery,但我會謹慎地記住這一點。 – kralco626 2010-10-29 17:00:31

1

只要給每個按鈕的一類,說「WaitOnClick」,然後就寫:$(".WaitOnClick").click(function() {

相關問題