2012-08-24 17 views
0

如何解決這個問題:火觸發點擊事件之後的功能

function Navigation(sender) { 
    var senderID = sender.id; 


    var answer = confirm("do you want to save your current layout ?"); 
    if (answer) { 
     $("#loadingImg").css("display", "block"); 
     $("#<%=Button1.ClientID %>").click(); 
     //the next line is never fired 
     if (senderID == "AboutClick") { setTimeout('ShowLoadingMsg()', 3000); } 

    }  
} 
function ShowLoadingMsg() { 
    window.location="About.aspx"; 
} 

<a href="javascript:void(0)" id="AboutClick" class="menu" onclick="Navigation(this);" >Navigate Click</a> 
<asp:Button ID="Button1" runat="server" OnClick="btnSaveState_Click" style="display:none;" /> 

//服務器端:

protected void btnSaveState_Click(object sender, EventArgs e) 
{ 

    SaveState(); 

} 

的主要問題是,這條線從來沒有發射什麼我做錯了什麼這裏

+0

哪條線.... –

+0

與註釋的行:如果(senderID == 「AboutClick」){ setTimeout('ShowLoadingMsg()',3000); } – Sora

+0

'Button1.click'中會發生什麼? –

回答

2

這裏的問題是,$("#<%=Button1.ClientID %>").click();導致整個頁面重新加載。因爲無論如何都會刷新頁面,所以在此之後設置超時的腳本並不重要。

您可以嘗試將Button1放入UpdatePanel之內,或者以其他方式解決問題,例如以相同的方法保存狀態和重定向。

+0

我不能使用ajax bcs它不能與我在我的代碼中工作 – Sora

+0

很好的答案謝謝 – Sora

0

試試這個:

<a href="#" id="AboutClick" class="menu trigger">Navigate Click</a>​ 

-

$(function(){ 
    $(".trigger").click(function(){ 
     var answer = confirm("do you want to save your current layout ?"); 
     if (answer) { 
      $("#loadingImg").show(); 
      if (this.id == "AboutClick") { setTimeout('ShowLoadingMsg()', 3000); } 
      $("#<%=Button1.ClientID %>").click(); 
     } 
    })  
}) 

function ShowLoadingMsg() { 
    window.location="About.aspx"; 
} 

Demo here!

+1

如果id是'AboutClick',這將不會運行'SaveState'代碼。 –

+0

你是對的;) –