Сравнить Validator без 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
и ничего в txtConfirmPassword textbox
,
Если я раскомментирую RequiredFieldValidators
тогда он сравнивается как надо.
Если это помогает, причина, по которой мне нужно это сделать, заключается в том, что я не могу расшифровать пароль и заполнить текстовое поле их текущим паролем. Поэтому, когда пользователь редактируется, ему нужно будет каждый раз вводить новый пароль с RequiredFieldValidator
в теме.
Таким образом, мое решение состояло в том, чтобы избавиться от RequiredFieldValidator
и просто проверьте, является ли текст нулевым или пустым, и если это так, не обновляйте пароль, но если это не так, обновите пользователя без обновления пароля.
Я надеюсь, что это имеет смысл, и если кто-то может помочь, я был бы очень признателен.
Если вам нужна дополнительная информация, пожалуйста, спросите.
Еще раз спасибо!
2 ответа
Вот одна мысль, я также в конечном итоге использовал это решение:
Как насчет настройки валидатора сравнения для проверки текстового поля пароля и сравнения его с подтверждением. Таким образом, валидатор сравнения срабатывает, только если в текстовом поле пароля есть значение.
<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>
Посмотрите этот фрагмент кода, в этом первом для пароля я использовал средство проверки регулярных выражений, и как только пароль действителен, тогда я включил средство проверки сравнения.
<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)(?=.*[a-z])(?=.*[A-Z])(?=.*[\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>