我有两个文本框控件,txtPassword和txtPassword2在web窗体上。
使用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>发布于 2014-11-05 06:28:46
您只为asp:RequiredFieldValidator添加txtPassword,因此如果txtPassword2留空将不会引发所需的字段错误。您需要添加的一件事是asp:RequiredFieldValidator for 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>发布于 2016-12-07 19:36:37
我也遇到过类似的情况,我希望在“插入”期间需要密码,并使用RequiredFieldValidators确保两个密码框都用一个CompareValidator完成,并确保它们匹配。
在编辑模式下,我关闭了RequiredFieldValidators并遇到了同样的问题,PasswordConfirm Textbox没有停止匹配,如果它是空的。
我通过使用2 CompareValidators来解决这个问题,ControlToValidate和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" />https://stackoverflow.com/questions/26747836
复制相似问题