在按钮执行回发之前触发的asp:按钮上添加jQuery click事件

时间:2011-07-28 15:02:20

标签: jquery asp.net onclick

我有一个带有asp:按钮的asp.net应用程序会导致回发,这意味着输入的html具有自动生成的onclick属性,我需要通过jQuery向onclick属性添加一个事件在自动生成的回发被触发之前触发。

下面是生成的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

之前触发我的事件

3 个答案:

答案 0 :(得分: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));
    });

});

答案 1 :(得分: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函数然后转到服务器端。如果您想停止使用return false;代替return true;

从javascript代码调用服务器端事件

答案 2 :(得分: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();
});