0

2つのASPxTextBox、ASPxValidationSummary、ASPxButton
がありますJSファイルにはOnPasswordValidation関数がありますが
、パスワードを入力してタブボタンをクリックすると、
txt_passwordコントロールのSetIsValid(false)は機能しませんが、txt_ConfirmPasswordでは機能します

なんで ?

<dx:ASPxTextBox ID="txt_password" runat="server" Password="true" AssociatedControlID="txt_password">
    <ClientSideEvents Validation="OnPasswordValidation" />
</dx:ASPxTextBox>

<dx:ASPxTextBox ID="txt_ConfirmPassword" runat="server" Password="true" AssociatedControlID="txt_ConfirmPassword">
    <ClientSideEvents Validation="OnPasswordValidation" />
</dx:ASPxTextBox>

<dx:ASPxButton ID="btnSubmit" runat="server" Text="Submit" ClientInstanceName="btnSubmit" onclick="btnSubmit_Click" AutoPostBack="False">
<ClientSideEvents Click="function(s, e) {onClickBtnSubmit();}"/>
</dx:ASPxButton>

function OnPasswordValidation(s, e) {
    var objpassword = GetObj('txt_password');
    var objConfirmPassword = GetObj('txt_ConfirmPassword');
    var password = aspxGetControlCollection().Get(objpassword.id);
    var ConfirmPassword = aspxGetControlCollection().Get(objConfirmPassword.id);

    if (password.GetValue() == null) {
        password.SetIsValid(false);
        ConfirmPassword.SetIsValid(false);
        return;
    }
    if (ConfirmPassword.GetValue() == null) {
        password.SetIsValid(false);
        ConfirmPassword.SetIsValid(false);
        return;
    }
    if (password.GetValue().length > 5 || ConfirmPassword.GetValue().length > 5) {
        if (password.GetValue() == ConfirmPassword.GetValue()) {
            password.SetIsValid(true);
            ConfirmPassword.SetIsValid(true);
        }
        else {
            password.SetIsValid(false);
            ConfirmPassword.SetIsValid(false);
            password.SetErrorText = "Password must equal with Confirm Password";
            ConfirmPassword.SetErrorText = "Password must equal with Confirm Password";
        }
    }
    else {
        ConfirmPassword.SetIsValid(false);
        password.SetIsValid(false);
    }
}
4

1 に答える 1

0

これは、検証を実装するための適切な方法ではありません。このようOnPasswordValidationにして、関数はテキストボックスごとに1回ずつ、2回実行されます。
これがあなたが必要とすることをするべきサンプルプロジェクトのチケットです: http ://www.devexpress.com/Support/Center/p/Q233058.aspx

devexコントロールに検証を実装する方法を理解するために、 DevExpressコントロールの検証の概要を読むことをお勧めします。

于 2012-04-17T14:40:55.470 に答える