【问题标题】:How do I use Jquery Validate to validate a password but not require it?如何使用 Jquery Validate 验证密码但不需要它?
【发布时间】:2012-01-20 16:08:57
【问题描述】:

我想知道是否有人使用过 Jquery Validate Password 插件 (http://bassistance.de/jquery-plugins/jquery-plugin-password-validation/) 来验证密码但不需要它们。

就我而言,我正在整理一个编辑用户表单。没有密码的用户不能存在。所以当管理员编辑用户时,我知道密码已经被验证并分配给用户。

我希望管理员能够提交表单并将密码字段留空。这意味着密码没有更改。但是,如果管理员确实想更改密码,我想使用 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>
}

这很好用。虽然它需要输入密码。我可以将其修改为不需要密码而只验证它吗?

【问题讨论】:

  • 只是想知道/Scripts/Common/jquery.js 您正在加载缩小的 jquery 还是标准?通常应该有jquery.min.js(只是一个旁注)
  • 是的...我相信它已经缩小了。我刚刚为这篇文章快速输入了该链接,因为该链接位于母版页中,并且我正在从视图中复制。 :-)

标签: javascript jquery jquery-plugins jquery-validate


【解决方案1】:

随便用

$("#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">

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

    • 感谢您的建议。不幸的是,它没有用。我认为它是密码插件的一部分,并且由于密码不够长而被挂断。 (顺便说一句:您的代码示例在规则周围缺少大括号)
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多