[英]CompareValidator without RequiredFieldValidator?
所以我一直在寻找,似乎无法找到类似的问题。
基本上,似乎使用CompareValidator
在没有RequiredFieldValidator
情况下不起作用。
<div class="control-group">
<label class="control-label" for="PositionName">
Password:</label>
<div class="controls">
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
<%--<asp:RequiredFieldValidator ID="rvPassword" runat="server" ControlToValidate="txtPassword"
ErrorMessage="Please Enter Password" SetFocusOnError="True" ValidationGroup="1"
CssClass="error"></asp:RequiredFieldValidator>--%>
</div>
</div>
<div class="control-group">
<label class="control-label" for="PositionName">
Confirm Password:</label>
<div class="controls">
<asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqConPass" runat="server" ControlToValidate="txtConfirmPassword"
ErrorMessage="Please Enter Confirm Password" SetFocusOnError="True" ValidationGroup="1"
CssClass="error"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="compPassword" runat="server" ControlToValidate="txtConfirmPassword"
ControlToCompare="txtPassword" ErrorMessage="Password Mismatch" SetFocusOnError="True"
ValidationGroup="1" CssClass="error"></asp:CompareValidator>
</div>
</div>
基本上,你可以看到我已经为传递和确认传递注释掉了RequiredFieldValidator
。 当我这样做时,我只能在txtPassword textbox
提交一个值,而在txtPassword textbox
只提交任何txtConfirmPassword textbox
。
如果我取消注释RequiredFieldValidators
那么它会进行比较。
如果它有帮助,我需要这样做的原因是因为我无法解密密码并使用当前密码自动填充文本框。 因此,无论何时编辑用户,他们都需要每次输入一个新密码,并在其上添加RequiredFieldValidator
。
所以我的解决方案是删除RequiredFieldValidator
并检查文本是否为空或空,如果是,请不要更新密码,但如果不是,则更新用户而不更新密码。
我希望这是有道理的,如果有人能提供帮助,我会非常感激。
如果您需要更多信息,请询问。
再次感谢!
请参阅此代码片段,首先是密码,我使用了正则表达式验证器,一旦密码有效,我就启用了比较验证器。
<script> function Validate() { if (document.getElementById('<%=txtPassword.ClientID %>').value != "") ValidatorEnable(document.getElementById('<%=ConfirmPasswordRequired.ClientID %>'), true); else ValidatorEnable(document.getElementById('<%=ConfirmPasswordRequired.ClientID %>'), false); } </script>
<p> Password <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox> <asp:RegularExpressionValidator ID="PasswordRegularExpression" runat="server" ErrorMessage="*Password must be at least 8 characters long and include at least one Special Character, one Number, and one Capital letter." ValidationGroup="ValidationGroup1" ValidationExpression="^.*(?=.{8,})(?=.*\\d)(?=.*[az])(?=.*[AZ])(?=.*[\\W]).*$" ControlToValidate="txtPassword" > </asp:RegularExpressionValidator> </p> <p> Confirm Password: <asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"></asp:TextBox> <asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" ControlToValidate="txtConfirmPassword" ErrorMessage="*Confirm Password is required." Enabled="false" ValidationGroup="ValidationGroup1"></asp:RequiredFieldValidator> <asp:CompareValidator ID="NewPasswordCompare" runat="server" ControlToCompare="txtPassword" ControlToValidate="txtConfirmPassword" ErrorMessage="*Confirm Password must match with the Password." ValidationGroup="ValidationGroup1"></asp:CompareValidator> </p> <p> <asp:Button ID="Button1" runat="server" Text="Save" ValidationGroup="ValidationGroup1" OnClick="Button1_Click" OnClientClick="Validate();" /> </p>
这是一个想法,我也最终使用这个解决方案:
如何设置比较验证器以验证密码文本框并将其与确认进行比较。 这样,只有在密码文本框中有值时,才会触发比较验证器。
<div class="control-group">
<label class="control-label" for="PositionName">Password:</label>
<div class="controls">
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"/>
</div>
</div>
<div class="control-group">
<label class="control-label" for="PositionName">Confirm Password:</label>
<div class="controls">
<asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"/>
<asp:CompareValidator ID="compPassword" runat="server" ControlToValidate="txtPassword"
ControlToCompare="txtConfirmPassword" ErrorMessage="Password Mismatch" SetFocusOnError="True"
ValidationGroup="1" CssClass="error"/>
</div>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.