1

我在 WebForms 页面上有以下按钮:

<asp:Button ID="btnNewProgramNext" runat="server" Text="Next &gt;&gt;" />

我有以下 javascript/jquery 来处理它的事件。

$('#<%= btnNewProgramNext.ClientID %>').on('click', function (e) {
    var errorMessage = '';
    var ok = false;
    var newCompany = $('#<%= NewCompanyMode.ClientID %>').val();
    if (newCompany == 1) {
        if (!$('#<%= txtProgramCompanyName.ClientID %>').val())
            errorMessage = 'You must enter a company name.';
        else if (!$('#<%= txtContactFirstName.ClientID %>').val())
            errorMessage = 'You must enter a contact first name.';
        else if (!$('#<%= txtContactLastName.ClientID %>').val())
            errorMessage = 'You must enter a contact last name.';
        else
            ok = true;
    }
    else {
        // Do something else
        ok = true;
    }
    $('#newProgramErrorMessage').text(errorMessage);
    return ok;
});

问题是,当此处理程序返回 false 时(当ok为 false 时,或者当我将最后一行更改为 时return false),回发仍然发生。

有什么技巧可以防止来自 javascript 的回发吗?我希望这行得通。

4

2 回答 2

2

您需要 e.preventDefault() 以取消按钮单击事件。

$('#<%= btnNewProgramNext.ClientID %>').on('click', function (e) {
    var errorMessage = '';
    var ok = false;
    var newCompany = $('#<%= NewCompanyMode.ClientID %>').val();
    if (newCompany == 1) {
        if ($('#<%= txtProgramCompanyName.ClientID %>').val() == "")
            errorMessage = 'You must enter a company name.';
        else if ($('#<%= txtContactFirstName.ClientID %>').val() == "")
            errorMessage = 'You must enter a contact first name.';
        else if ($('#<%= txtContactLastName.ClientID %>').val() == "")
            errorMessage = 'You must enter a contact last name.';
        else
            ok = true;
    } else {
        // Do something else
        ok = true;
    }
    if (!ok) {
        e.preventDefault();
        $('#newProgramErrorMessage').text(errorMessage);
    }
    // else everything is valid, so post back to server.
});
于 2013-10-01T16:39:04.853 回答
1

为什么不尝试通过ClientClick属性连接它而不是使用 jQuery 来订阅 click 事件。这可能是 ASP.NET 用来确定是否终止 PostBack 的路由。

于 2013-10-01T16:23:54.643 回答