JQuery密码验证是否影响所有输入类型密码?

时间:2012-02-22 11:37:04

标签: jquery

我在HTML表单上有3个输入:旧密码,新密码和重新输入新密码。我为新密码字段使用JQuery密码验证插件。但如果三个输入是密码类型,则插件会影响所有三个输入。我希望它只影响一个输入(新密码),我该怎么做?以下是我的代码:

    // The following code is in an UserControl, the form is in the page containt this control
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <script type="text/javascript">
        // This script is for validation
            Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CheckValidationStatus);
            function CheckValidationStatus(sender, args) { { var isValid = $("form").validate().form(); args.set_cancel(!isValid); } }
        </script>

    <table class="listing form" cellpadding="0" cellspacing="0">
        <tr>
            <td class="first"><strong>Old password:</strong></td>
            <td class="last ofield">
                <asp:TextBox ID="txtOldPassword" runat="server" CssClass="text required"  TextMode="Password"></asp:TextBox>
            </td>
        </tr>
        <tr  class="bg">
            <td class="first" width="172"><strong>New password:</strong></td> 
            <td class="last pwdfield">
                 <asp:TextBox ID="tNewPassword" runat="server" CssClass="text password"  TextMode="Password" ></asp:TextBox>
                 <span>Password strength</span>
                 <div class="password-meter">
                     <div class="password-meter-message">Quá ng?n</div>
                     <div class="password-meter-bg">
                         <div class="password-meter-bar"></div>
                     </div>
                 </div>
            </td>
        </tr>
        <tr>
            <td class="first"><strong>Retype Password:</strong></td>
            <td class="last ofield"><asp:TextBox ID="txtRetypePassword" runat="server" CssClass="text" TextMode="Password" ></asp:TextBox></td>
        </tr>
</table>

<p style="text-align:right">
   <asp:Button ID="Button1" runat="server" Text="Update" />
</p>

</ContentTemplate>
</asp:UpdatePanel>  

3 个答案:

答案 0 :(得分:2)

问题是密码验证插件添加了一个名为“password”的新验证方法。

$.validator.addMethod("password", function(value, element, usernameField) {

jQuery验证插件确定应调用哪些验证方法的方法之一是检查方法名称是否等于字段类型。在这种情况下,所有元素的类型都是密码(由TextMode =“Password”设置),与添加的新方法相同。

解决方法是将密码验证插件中的方法名称更改为其他名称。

$.validator.addMethod("passwordstrength", function(value, element, usernameField) {

当使用验证插件向新方法名称注册方法时,您还必须更改。

$.validator.classRuleSettings.password = { passwordstrength: true };

现在只会验证具有密码类的字段。

答案 1 :(得分:1)

将ID添加到“新密码”字段(id =“newpassword”)并为jQuery密码验证插件指定此ID。

这样的事情:

$("#newpassword").validate();

答案 2 :(得分:0)

不知道插件,但我认为您可以轻松更改它以仅对您的特定输入应用验证(为其指定唯一ID)。或者更好的是,您可以将新密码输入的ID传递给插件,并使其仅验证该输入。