Asp.NET RequiredFieldValidator和OnClientClick asp:Button

时间:2013-08-11 15:49:07

标签: asp.net validation requiredfieldvalidator onclientclick

我正在用C#开发一个经典的WebForms应用程序,我有一个自定义的aspx页面,用户可以修改他们的数据(电子邮件,密码等等),每个文本框都有一个3文本框和一个RequiredFieldValidator

            <asp:ValidationSummary ID="ChangeUserPasswordValidationSummary" runat="server" CssClass="failureNotification" 
             ValidationGroup="ChangeUserPasswordValidationGroup"/>

我有一个提交按钮:

<asp:Button ID="ChangePasswordPushButton" runat="server" Text="Cambia password"   OnClick="ChangePwd_Click" OnClientClick="return ValidatePasswordFields();"
                     ValidationGroup="ChangeUserPasswordValidationGroup"/>

在这种形式下,当我在转到服务器端'ChangePwd_Click'功能之前点击ChangePasswordPushButton时,如果其中一个文本框为空,我想禁用(客户端)验证器。

这些是我写的客户端功能:

function ValidatePasswordFields() {

    var oldpwd = $('#<%=txtCurrentPassword.ClientID %>').val();
    if (oldpwd == '') {
        setValidators(false);
        return true;
    } else { setValidators(true);return false; }


}


function setValidators(status) {
    ValidatorEnable(document.getElementById('<%= txtCurrentPasswordRequired.ClientID %>'), status);
    ValidatorEnable(document.getElementById('<%= ConfirmNewPasswordRequired.ClientID %>'), status);
    ValidatorEnable(document.getElementById('<%= NewPasswordRequired.ClientID %>'), status);
    return false;

}

问题是此代码始终会回发。

你可以帮帮我吗? 感谢

1 个答案:

答案 0 :(得分:1)

您的问题出在ValidatePasswordFields中,您在开始时返回true。只需删除它:

function ValidatePasswordFields() {
    var oldpwd = $('#<%=txtCurrentPassword.ClientID %>').val();
    if (oldpwd == '') {
        setValidators(false);
        return true;
    } else { setValidators(true);return false; }


}