2011-06-10 73 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中涉及的对话箱的一个问题。在发布提交之前关闭对话框时,它工作正常。