Javascript 防止在按钮单击和多客户端功能上回发

Javascript 防止在按钮单击和多客户端功能上回发,javascript,jquery,asp.net,json,postback,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/j

我有一个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>

$(文档).ready(函数(){
$(“#”)模糊(函数(){
ValidateUserNameAfterBlur();
});
});
函数ValidateUserName(){
风险价值;
$.ajax({type:“POST”,
url:“../UserNameWebService.asmx/ValidateUserName”,
数据:JSON.stringify({strUsername:$(“#”)val()}),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
async:false,
成功:功能(数据){
returnValue=data.d;
},
错误:函数(xhr、ajaxOptions、thrownError){
警报(xhr.状态);
警报(thrownError);
}
});
返回值;
}
//单击“保存”按钮时防止回发。
函数ValidateUserNameBeforeSubmitting(){
var isValid=ValidateUserName();
返回有效;
}
函数ValidateUserNameAfterBlur(){
var isValid=ValidateUserName();
$('#TextUserNameError')。切换(!isValid);
}
该函数用于验证用户名的文本框。但我有几个文本框需要验证。 每一个都将显示不同的错误。我可以在按钮上有多个客户端呼叫吗


谢谢。

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

$("#<%=TextUserName.ClientID%>").blur(function () {
    ValidateUserNameAfterBlur();
    ValidatePasswordAfterBlur();
    ValidateFoo();
    PhoneYourWife();
    ...
});
$(“#”)模糊(函数(){
ValidateUserNameAfterBlur();
ValidatePasswordAfterBlur();
validatefo();
给你妻子打电话;
...
});

如果您只想在所有文件都有效时提交:

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

    submitTheData();
});
$(“#”)点击(函数(){
if(ValidateUserNameAfterBlur()&&
ValidatePasswordAfterBlur()&&
validatefo()&&
打电话给你妻子()
提交数据();
});

我可以在按钮上进行多个客户端调用是什么意思?我想要类似OnClientClick=“return function1()、return function2()”等或OnClientClick1=。。。OnClientClick2=…这只是文本用户名文本框上的模糊,但我还有其他文本框需要模糊。@Love。好的。附加那些文本框模糊回调,问题在哪里?在提交之前,ValidateUserName如何?我需要几个类似的函数来处理不同的文本框?我们怎样才能把它们放在一起?@爱。我真的很难理解你的需要,你是对的。但是我提交的数据是在服务器端的代码隐藏中。可能是哪种代码?