2014-11-05 99 views
0

我在Web窗體上有兩個文本框控件,txtPassword和txtPassword2。CompareValidator缺失值

使用CompareValidator控件,兩個字段都需要匹配。

txtPassword = "" 
txtPassword2 = "" 
No compare error 
txtPassword throws it's required field error 

txtPassword = "1" 
txtPassword2 = "" 
No compare error 

txtPassword = "" 
txtPassword2 = "1" 
Compare error 
txtPassword throws it's required field error 

txtPassword = "1" 
txtPassword2 = "2" 
Compare error 

任何想法爲什麼它缺少txtPassword2的空白值?

下面的代碼:

<asp:TextBox ID="txtPassword" Text="" TextMode="Password" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required!" ControlToValidate="txtPassword"></asp:RequiredFieldValidator> 

<asp:TextBox ID="txtPassword2" Text="" TextMode="Password" runat="server"></asp:TextBox> 
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Passwords do not match!" ControlToValidate="txtPassword2" ControlToCompare="txtPassword"></asp:CompareValidator> 
+2

我不記得CompareValidator不過的RegularExpressionValidator不空的數據。所以你仍然需要RequiredFieldValidator。我認爲這是一樣的。添加第二個。 – abatishchev 2014-11-05 00:59:42

+0

你需要爲txtPassword2添加一個RequiredFieldValidator – sh1rts 2014-11-05 05:00:04

回答

0

你只爲txtPassword添加asp:RequiredFieldValidator,所以如果txtPassword2留空將不會拋出必填字段錯誤。您需要添加的一件事是asp:RequiredFieldValidator對於txtPassword2,並且您還需要指定驗證組。因此,該代碼將是這樣的:

<asp:TextBox ID="txtPassword" Text="" TextMode="Password" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required!" ControlToValidate="txtPassword" ValidationGroup="checkNull"></asp:RequiredFieldValidator> 

<asp:TextBox ID="txtPassword2" Text="" TextMode="Password" runat="server"></asp:TextBox> 

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Required!" ControlToValidate="txtPassword2" ValidationGroup="checkNull"></asp:RequiredFieldValidator> 

<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Passwords do not match!" ControlToValidate="txtPassword2" ControlToCompare="txtPassword"></asp:CompareValidator> 
+0

工作正常,但並不完全是我所追求的。 txtPassword是必填字段,txtPassword2不是必填字段(技術上)。由於txtPassword是必需的,因此必須輸入一些內容,因爲txtPassword2必須與txtPassword相匹配才能使用它(不使用必需的字段驗證程序)。 我試圖克服的主要問題是當txtPassword不爲空時發佈的表單,但txtPassword2爲空。他們不匹配,那麼爲什麼它不趕上它?對不起,長期評論,我希望這是有道理的.. – mrkd1991 2014-11-07 02:12:39

0

我也有類似的情況,我想密碼「插入」期間必要的,用來RequiredFieldValidators,以確保這兩個密碼箱都用CompareValidator確保他們匹配完成。

在編輯模式下,我關閉了RequiredFieldValidators並遇到同樣的問題,如果密碼保留爲空,則PasswordConfirm Textbox不會停止匹配。

我解決了這個問題,使用了2 CompareValidators,因爲ControlToValidateControlToCompare字段被交換。這迫使他們來驗證彼此,如果任何在任一類型的,它迫使檢查

<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="tbPassword" ControlToCompare="tbConfirmPassword" Type="String" Display="Dynamic" ForeColor="Red" ErrorMessage="<br />The new passwords do not match" /> 
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="tbConfirmPassword" ControlToCompare="tbPassword" Type="String" Display="Dynamic" ForeColor="Red" ErrorMessage="<br />The new passwords do not match" />