0

私は C# で従来の WebForms アプリケーションを開発しており、ユーザーがデータ (電子メール、pwd など) を変更できるカスタム aspx ページを持っています。

            <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 をクリックすると、テキスト ボックスの 1 つが空の場合に (クライアント側で) バリデーターを無効にしたいと考えています。

これらは私が書いたクライアント側の関数です:

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

あなたの問題は、最初に true を返す ValidatePasswordFields にあります。それを削除するだけです:

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


}
于 2013-08-11T16:30:55.343 に答える