2011-08-09 46 views
3

當您通過jQuery將客戶端單擊事件附加到ASP.NET按鈕時,您是否喪失了執行回發的能力?我只需要在服務器端的事情發生之前做一些jQuery,它似乎在中斷這個過程。ASP.NET按鈕單擊,在服務器控件上使用jQuery

$('[id$="btnDisableAlarms"]').click(function() { 
      var commentValue = $('[id$="txtComment"]').val(); 
      if (commentValue == "") { 
       // add red border (CSS) 
       $('[id$="txtComment"]').addClass("redCommentError"); 
      } 
      return; 

     }); 

該按鈕與一個點擊事件連接起來,但瀏覽器沒有預算。

btnDisableAlarms.Click+=new EventHandler(btnDisableAlarms_Click); 

public void btnDisableAlarms_Click(object sender, EventArgs e) 
    { 
     Response.Write("Still able to manage a postback from server"); 
    } 

回答

2

問題是,您的jQuery點擊處理程序覆蓋ASP分配給按鈕的點擊處理程序。你可以這樣做:

$('[id$="btnDisableAlarms"]').each(function (index, button) { 
    var oldClickHandler = button.onclick; 
    $(button).click(function() { 
     // Do your stuff 
     oldClickHandler(); 
    }); 
}); 

這可能不是用於緩存舊點擊處理程序的正確語法,但它可能與此類似。

編輯:其實這將是更安全的保護,如上下文和點擊事件,事:

$('[id$="btnDisableAlarms"]').each(function (index, button) { 
    var oldClickHandler = button.onclick; 
    $(button).click(function (clickEvent) { 
     // Do your stuff 
     oldClickHandler.call(button, clickEvent); 
    }); 
}); 

這確保瞭如果舊的點擊處理程序使用this或試圖訪問點擊事件觸發它,它仍然會正常工作。

+1

小錯字:onClick - > onclick。在帖子中修改的編輯太小(編輯必須是6個以上的字符)。 –

+0

我更新了onclick的外殼。 – MrBoJangles

0

您可以嘗試使用jQuery的.submit()方法(或者可能正在偵聽提交事件而不是單擊事件)來啓動常規表單提交。

這裏閱讀的例子:http://api.jquery.com/submit/

0

只需要在年底你的JQuery方法返回true,它將執行回發。

相關問題