Как использовать Jquery Validate для проверки пароля, но не требует его? - PullRequest
2 голосов
/ 20 января 2012

Мне интересно, использовал ли кто-нибудь плагин Jquery Validate Password (http://bassistance.de/jquery-plugins/jquery-plugin-password-validation/) для проверки паролей, но не требует их.

В моем случае я собираю форму редактирования пользователя. AПользователь не может существовать без пароля. Поэтому, когда администратор редактирует пользователя, я знаю, что пароль уже был подтвержден и назначен пользователю.

Я хочу, чтобы администратор мог отправить форму иоставьте поля пароля пустыми. Это означает, что пароль не был изменен. Но, если администратор действительно хочет изменить пароль, я хочу использовать пароль проверки jquery (ссылка выше) для проверки пароля.

Вмой HTML <head>, у меня есть:

<script src="/Scripts/Common/jquery.js" type="text/javascript"></script>
<script src="/Scripts/Common/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/Common/jquery-validate.password/jquery.validate.password.js" type="text/javascript"></script>
<link href="/Scripts/Common/jquery-validate.password/jquery.validate.password.css" rel="stylesheet" type="text/css" />
<script>
    $(document).ready(function() {
        $("#edit").validate();
        $("#password").valid();
    });
</script>

и в поле form (в синтаксисе Razor и MVC):

@using (Html.BeginForm("Edit", "User", FormMethod.Post, new { id = "edit" })) { 
    @Html.ValidationSummary()
    @Html.HiddenFor(model => model.UserAccount.UserAccountId)

    <!-- other user fields removed for brevity -->

    <table>
        <tr>
            <th>Password</th>
            <td>
                @Html.PasswordFor(x => x.Password, new { id="password", @class="password"})
                @Html.ValidationMessageFor(x => x.Password)
            </td>
            <td>
                <div class="password-meter">
                    <div class="password-meter-message"> </div>
                    <div class="password-meter-bg">
                        <div class="password-meter-bar"></div>
                    </div>
                </div>
            </td>
        </tr>
    </table>

    <p>
        <button type="submit">Save</button> @Html.ActionLink("Nevermind", "Index")
    </p>
}

Это прекрасно работает. Хотя это требуетПароль для ввода. Могу ли я изменить его, чтобы он не требовал ввода пароля и только проверял его?

Ответы [ 2 ]

1 голос
/ 28 мая 2012

просто используйте

$("#edit_form").validate({
    rules: {
        re_password: {
            equalTo: "#password"
        }
    },
    messages: {
        re_password: {
            equalTo: "Password does not match"
        }
    }
});

без использования класса «обязательный» в поле ввода

<input id="password" type="password" name="password" class="TextBox">
<input id="re_password" type="password" name="re_password" class="TextBox">
0 голосов
/ 20 января 2012

Попробуйте это

    $(document).ready(function() {
        $("#edit").validate(
           rules: {
              password: { required: false }
           },
        );
        $("#password").valid();
    });
...