防止按钮单击和多个客户端功能的回发

时间:2012-05-17 14:24:28

标签: javascript jquery asp.net json postback

我有一个更新数据库的asp.net按钮

<asp:Button ID="btnSave" runat="server" Text="SaveChanges" OnClick="btnSave_Click"
        CssClass="saveButton" ValidationGroup="answer" OnClientClick="return ValidateUserNameBeforeSubmitting();" />

<script type="text/javascript">
    $(document).ready(function () {
        $("#<%=TextUserName.ClientID%>").blur(function () {
            ValidateUserNameAfterBlur();
        });
    });

    function ValidateUserName() {
        var returnValue;
        $.ajax({ type: "POST",
            url: "../UserNameWebService.asmx/ValidateUserName",
            data: JSON.stringify({ strUsername: $("#<%=TextUserName.ClientID%>").val() }), 
            contentType: "application/json; charset=utf-8",
            dataType: "json",

            async: false,
            success: function (data) {
                returnValue=data.d;
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(thrownError);
            }
        });
        return returnValue;
    }
    // to prevent postback when click save button. 
    function ValidateUserNameBeforeSubmitting() {
        var isValid = ValidateUserName();
        return isValid;
    }

    function ValidateUserNameAfterBlur() {
        var isValid = ValidateUserName();
        $('#TextUserNameError').toggle(!isValid);
    }
</script>

该功能用于验证用户名的文本框。但我有一些文本框需要验证。 每个都会显示不同的错误。我可以在按钮上进行多个客户端呼叫吗?

感谢。

1 个答案:

答案 0 :(得分:1)

当然,您可以拥有多个客户端功能:

$("#<%=TextUserName.ClientID%>").blur(function () {
    ValidateUserNameAfterBlur();
    ValidatePasswordAfterBlur();
    ValidateFoo();
    PhoneYourWife();
    ...
});

如果您只想在所有人都提交时提交:

$("#<%=btnSave.ClientID%>").click(function () {
    if (ValidateUserNameAfterBlur() &&
        ValidatePasswordAfterBlur() &&
        ValidateFoo()               &&
        PhoneYourWife())

    submitTheData();
});