UseSubmitBehavior =“false”并绑定OnClientClick?

时间:2011-07-02 21:50:38

标签: jquery asp.net

<asp:Button ID="RecoverButton" runat="server" Text="Recover"
    OnClick="RecoverButton_OnClick" UseSubmitBehavior="false" />

我发现UseSubmitBehavior="false"会覆盖我提供的OnClientClick函数。

我接着这样做了:

$(document).ready(function() {
    $("[id$=RecoverButton]").live("click", RecoverButton_OnClick);
});

function RecoverButton_OnClick(s, e) {
    var input = $("[id$=MasterUsername]").val();
    var valid = $dn.s.MailValidation(input);

    if (!valid) {
        // prevent postback here
    }
}

但我不知道如何阻止回发事件的启动。 我尝试过像e.preventDefault()这样的东西,但它不起作用,想法?

更新的事情是,__doPostbackjQuery的点击处理程序似乎同时启动(或者可能是ASP.NET首先触发),但我在我的RecoverButton函数上发出警报,firebug已经显示警报在那里发生回发,阻止执行。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 我使用以下脏代码解决了这个问题:

  if (!valid) {

     //throw a exception to prevent _doPostBack method running.
     var e = new Error(); 
     throw e;
  }

答案 1 :(得分:0)

试试这个:

$(document).ready(function() {
    $("[id='<%= RecoverButton.ClientID %>']").live("click", RecoverButton_OnClick);
}
    function RecoverButton_OnClick(event) {
        var input = $("[id$=MasterUsername]").val();
        var valid = $dn.s.MailValidation(input);
        if (!valid) {
            return false; //This cancels the submit event
        }
    }

希望这会有所帮助。干杯