2008-11-14 70 views
0

我正在使用UpdatePanel並希望將CompareValidator放在兩個文本框中,以驗證用戶輸入的密碼和確認是否相同。UpdatePanel中的CompareValidator - VS2008

這是工作的罰款(我有VS2008和使用AM .NET 3.5)開箱,有一個小問題:

的驗證,一旦發射的用戶點擊了第一個文本框的,前他們有機會打入第二名。這不會以編程方式導致任何REAL問題(所發生的只是錯誤消息顯示,當他們鍵入確認時它會消失),但我們的測試人員說這是一個問題。它將不會通過UA測試,直到驗證不會觸發,直到他們點擊「保存」。

如何讓CompareValidator不會觸發,直到他們將文字輸入到兩個框中?

編輯:

這是一個標記的例子。

<div> 
     <div><asp:Label runat="server" ID="lblPassword" Text="Password"/></div> 
     <div><asp:TextBox runat="server" TextMode="password" ID="txtPassword" size="25" /></div>  
    </div> 
    <div> 
     <div><asp:Label runat="server" ID="lblConfirmPassword" Text="Confirm Password"/></div> 
     <div><asp:TextBox runat="server" TextMode="password" ID="txtConfirmPassword" size="25" /></div> 
    </div> 
    <asp:CompareValidator ID="CompareValidator1" ValidationGroup="PublishPassValidation" ControlToValidate="txtPassword" ControlToCompare="txtConfirmPassword" runat="server" ErrorMessage="Passwords do not match"></asp:CompareValidator> 

以上內容位於頁面上UpdatePanel的ContentTemplate內的控件中。

(爲簡潔,刪除CSS類和樣式)

+0

請發佈您的驗證器標籤標記 – FlySwat 2008-11-14 19:54:41

+0

添加標記標記。 – Jeff 2008-11-14 21:46:11

回答

1

嘗試切換它,以便在確認文本框而不是密碼文本框上進行驗證。通過這種方式,直到您修改確認文本框或表單被提交後纔會觸發。你可能想要在密碼文本框上輸入必要的字段驗證器。

<div> 
    <div><asp:Label runat="server" ID="lblPassword" Text="Password"/></div> 
    <div><asp:TextBox runat="server" TextMode="password" ID="txtPassword" size="25" /> 
     <asp:RequiredFieldValidator runat="server" ID="passwordRequiredValidator" 
            ControlToValidate="txtPassword" 
            ValidationGroup="PublishPassValidation" 
            ErrorMessage="Password is required." />  
    </div>  
</div> 
<div> 
    <div><asp:Label runat="server" ID="lblConfirmPassword" Text="Confirm Password"/></div> 
    <div><asp:TextBox runat="server" TextMode="password" ID="txtConfirmPassword" size="25" /></div> 
</div> 
<asp:CompareValidator ID="CompareValidator1" ValidationGroup="PublishPassValidation" 
         ControlToValidate="txtConfirmPassword" 
         ControlToCompare="txPassword" runat="server" 
         ErrorMessage="Passwords do not match"> 
</asp:CompareValidator> 
1

你可以關閉客戶端驗證該驗證。

EnableClientScript="false" 

這將意味着一個往返服務器報告無效狀態,不過,你必須確保你正在檢查該頁面是繼續之前確實有效。

Page.Validate("PublishPassValidation"); 

if (Page.IsValid) 
{ 
    // Do Stuff 
} 
1

我有一種感覺,你有孩子在更新面板上啓用觸發器?

用戶是否在密碼框中按「ENTER」?你能否確認是否由於某種原因更新面板在移動焦點後正在執行局部刷新?

如果是這樣,它會觸發驗證。