CompareValidator is missing values



我在一个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>

您只为txtPassword添加asp:RequiredFieldValidator,因此如果txtPassword2为空,则不会引发所需的字段错误。需要为txtPassword2添加asp:RequiredFieldValidator,还需要指定验证组。因此代码将类似于:

<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>

我也遇到过类似的情况,我希望在"插入"过程中需要密码,并使用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" />

相关内容

最新更新