【问题标题】:Adding jQuery click event on asp:button that fires before the button does a postback在 asp:button 上添加 jQuery click 事件,该事件在按钮回发之前触发
【发布时间】:2011-07-28 15:02:20
【问题描述】:

我有一个带有 asp:button 的 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 之前触发

【问题讨论】:

  • 在页面回发之前你想做什么?
  • 调用任何 javascript 函数,警报就可以了,我已经更新了我的帖子,希望对您有所帮助。干杯。
  • 非常感谢您遇到同样的问题。并感谢 ShankarSangoli 的回复。

标签: jquery asp.net onclick


【解决方案1】:

你可以试试 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));
    });

});

【讨论】:

  • 好东西,我使用了第二个选项,我希望 jQuery 能够以某种方式对事件进行排序,但这解决了我的问题,欢呼。
【解决方案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;

【讨论】:

  • 事件必须通过 jQuery 添加我不想在 html 中添加更多的 javascript。
【解决方案3】:

怎么样:

<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();
});

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多