2011-06-10 70 views
0

我有一個heisenbug - 它在我放置一個Firebug斷點時起作用,但它沒有斷點就無法工作。jQuery提交Heisenbug

LoginSubmit函數從我的代碼中的兩個地方調用。在一個實例中,btnLoginSubmit_Click事件被成功觸發,但在另一個實例中,事件不會觸發,除非我在$ submitButton.click()中放置斷點。線。

頁面背後
function LoginSubmit() { 
    $("#diagnostics").text(""); 
    var $submitButton = $("#<%=btnLoginSubmit.ClientID %>"); 
    $submitButton.click(); // <-- This is the line of code that is not executing. 
    $("#diagnostics").text("LoginSubmit failed to submit postback. "); 
} 

    <asp:Button ID="btnLoginSubmit" runat="server" Text="Submit" CssClass="hiddenButton" 
     OnClick="btnLoginSubmit_Click" OnClientClick="return true;" Visible="true" /> 

代碼:

protected void btnLoginSubmit_Click(object sender, EventArgs e) 
    { 
.... 
    } 
+0

是從同一個按鈕或兩個不同按鈕調用兩次的函數?如果有兩個不同的按鈕,他們都有ID ID =「btnLoginSubmit」?這可能是一個問題嗎? – daybreaker 2011-06-10 18:53:15

+0

是否在文檔加載之後調用LoginSubmit,即在/ document.ready之後? – Chandu 2011-06-10 18:55:23

+0

這兩個地方都是由用戶交互引起的LoginSubmit_Click函數嗎?或者是在另一個javascript中調用失敗的那個呢? – ExCodeCowboy 2011-06-10 18:56:24

回答

0

考慮註冊一個PostBackEventHandler而不是發射按鈕

public partial class ScheduleEdit : System.Web.UI.Page, 
     System.Web.UI.IPostBackEventHandler 
    { 
     protected void Page_Init(object sender, EventArgs e) 
     { 
      var postBack = Page.ClientScript.GetPostBackEventReference(this, null); 

      var script = "function postback() { " + postBack + "; }"; 

      Page.ClientScript.RegisterStartupScript(GetType(), this.UniqueID, script, true); 
     } 

     // this is called via the client side 'postback' script 
     public void RaisePostBackEvent(string eventArgument) 
     { 
      DoStuff(); 
     } 
    } 


    // client side script: 
    $("#DP").datepicker({ 
     onSelect: function (dateText, inst) { postback(); }, 
    }); 
0

問題的onclick參與jQuery中涉及的對話箱的一個問題。在發佈提交之前關閉對話框時,它工作正常。