2011-07-28 24 views
4

我有一個asp.net應用程序,它帶有一個導致回傳的asp:按鈕,這意味着輸入的html有一個onclick屬性,它是自動生成,我需要通過jQuery添加一個事件到onclick屬性,在自動生成的回發被觸發之前觸發。在asp:按鈕上添加jQuery點擊事件,按鈕執行回發之前觸發

下面是生成的html的一個例子,我需要確保我的事件由jQuery添加在WebForm_DoPostBackWithOptions()函數之前觸發。

<input id="ctl00_MainContent_Save" type="submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$Save", "", true, "", "", false, false))" value="" name="ctl00$MainContent$Save"> 

更加清晰,我知道我可以像這樣通過jQuery添加一個事件:

$('#ctl00_MainContent_Save').click(function() { 
    somfunction(); 
}); 

,但我想我的事件給WebForm_DoPostBackWithOptions之前進行發射

+0

你想要的網頁提交之前做什麼? – ShankarSangoli

+0

調用任何JavaScript函數,警報將做,我已經更新了我的帖子,希望它有幫助。乾杯。 – Dave

+0

非常感謝你有完全相同的問題。並感謝ShankarSangoli的回覆。 –

回答

4

您可能可以嘗試mousedown事件,它將在點擊事件觸發前觸發。

$('#ctl00_MainContent_Save').mousedown(function() { 
    somfunction(); 
}); 

或嘗試下面的代碼

$(document).ready(function(){ 

    $('#ctl00_MainContent_Save') 
    .attr("onclick", null) 
    .removeAttr("onclick") 
    .click(function() { 
     somfunction(); 
     WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($(this).attr("name"), "", true, "", "", false, false)); 
    }); 

}); 
+0

好東西,我使用了第二個選項,我希望jQuery能夠以某種方式排序事件,但是這解決了我的問題。 – Dave

2

希望這會給你一個關於如何做的想法。

<asp:Button ID="bsrc" runat="server" Text="Search" OnClick="bsrc_Click" /> 


<script type="text/javascript" language="javascript"> 
    $(document).ready(function() 
    { 
     $('#<%= bsrc.ClientID %>').click(function(e) 
     {    
       return true; 
     }); 
    }); 
</script> 

當你點擊按鈕時,它會調用javascript函數,然後將去服務器端。如果你想阻止javascript代碼調用服務器端事件只是return false;代替return true;

+0

事件必須通過jQuery添加我不想在html中使用更多的javascript。 – Dave

+0

答案已更新。 – MUS

0

如何:

<input id="ctl00_MainContent_Save" type="submit" value="" 
    name="ctl00$MainContent$Save"> 
... 


$('#ctl00_MainContent_Save').click(function(e) { 
    e.preventDefault(); 
    somfunction(); 
    WebForm_DoPostBackWithOptions(
     new WebForm_PostBackOptions("ctl00$MainContent$Save", 
     "", true, "", "", false, false))" 
}); 

如果你不能改變HTML,你可以嘗試(警告:未經測試)

var $link = $('#ctl00_MainContent_Save'); 
var oldFunction = $link[0].onClick; 
$link[0].onClick = null 
$link.click(function(e) { 
    e.preventDefault(); 
    somfunction(); 
    oldFunction(); 
});