0

我正在用 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;

}

问题是这个代码总是回发。

你能帮助我吗?谢谢

4

1 回答 1

1

您的问题出在 ValidatePasswordFields 中,您一开始就返回 true。只需将其删除:

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


}
于 2013-08-11T16:30:55.343 回答