0

我在 Web 表单上有两个文本框控件,txtPassword 和 txtPassword2。

使用 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>
4

2 回答 2

0

您仅添加asp:RequiredFieldValidatorfor txtPassword,因此如果txtPassword2留空将不会引发必填字段错误。您需要添加的一件事是asp:RequiredFieldValidatorfor 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>
于 2014-11-05T06:28:46.643 回答
0

我有类似的情况,我希望在“插入”期间需要密码,并用于RequiredFieldValidators确保两个密码框都完成并CompareValidator确保它们匹配。

在编辑模式下,我RequiredFieldValidators关闭并遇到了同样的问题,如果 PasswordConfirmTextbox留空,它不会停止匹配。

我通过使用 2 解决了这个问题,并交换CompareValidatorsControlToValidateand字段。ControlToCompare这迫使他们相互验证,以便如果在其中任何一个中输入任何内容,它就会强制进行检查

<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" />
于 2016-12-07T19:36:37.090 回答