jquery中的密码验证

时间:2011-10-21 14:46:27

标签: jquery validation

我很抱歉,我要粘贴相当混乱的代码,但如果可以,请帮助我 实际上我正在实现一个密码更改功能,其中更改密码按钮的onclientclick事件我正在调用一个javascript函数,我正在验证三件事

  1. 当前密码是否与旧密码匹配(通过ajax调用)
  2. 并且新密码和确认密码字段包含相同数据。
  3. 当然是否有任何字段为空白
  4. 第二个和第三个工作正常,但在第一种情况下,即使密码与旧密码不匹配,而其他条件已满足,则更改密码

    javascript函数是

    function check() {
    var isValid = true;
        // Validate User Information.
        if ($("input[id$='txtBoxPasswrd']").val().length >= 0 && $("input[id$='txtBoxPasswrd']").val().trim() != "") {
            $.ajax({
                type: "POST",
                url: "UserProfile.aspx/CheckCurrentUserPassword",
                data: "{'userPasswrd':'" + $("input[id$='txtBoxPasswrd']").val() + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    if (msg.d != null) {
                        var result = eval(msg.d);
                        if (result.toString() == "true") {
                            $("input[id$='txtBoxPasswrd']").next()
                           .removeClass()
                           .addClass('success')
                           .text("Ok");
                        }
                        else {
                            $("input[id$='txtBoxPasswrd']").next()
                           .removeClass()
                           .addClass('failure')
                           .fadeIn('slow')
                           .text("Password doesn't match with your old password");
    
                            isValid = false;
                        }
                    }
                }
            });
        }
        else {
            $("input[id$='txtBoxPasswrd']").next()
                           .removeClass()
                           .addClass('failure')
                           .fadeIn('slow')
                           .text("Can't be blank.");
            isValid = false;
        }
        if ($("input[id$='txtNewPassword']").val().length > 0 && $("input[id$='txtNewPassword']").val().trim() != " ") {
            if ($("input[id$='txtConfirm']").val().length > 0 && $("input[id$='txtNewPassword']").val() != $("input[id$='txtConfirm']").val()) {
                $('#txtConfirm').next()
                                            .removeClass()
                                            .addClass('failure')
                                            .fadeIn('slow')
                                            .text("Password doesn't match.");
                isValid = false;
            }
            else {
                $("input[id$='txtNewPassword']").next()
                                     .removeClass()
                                     .addClass('success')
                                     .fadeIn('slow')
                                     .text("Ok");
            }
        }
        else {
            $("input[id$='txtNewPassword']").next()
                                 .removeClass()
                                 .addClass('failure')
                                 .fadeIn('slow')
                                 .text("Can't be blank.");
            isValid = false;
        }
        if ($("input[id$='txtConfirm']").val().length == 0 || $("input[id$='txtConfirm']").val().trim() == "") {
            $("input[id$='txtConfirm']").next()
                                 .removeClass()
                                 .addClass('failure')
                                 .fadeIn('slow')
                                 .text("Can't be blank.");
            isValid = false;
        }
        return isValid;
    }
    

    用ajax调用编写的方法是正常的,因为它返回正确的错误消息。 这是一些如何将isValid返回true,删除ajax调用方法,它适用于其他两个验证。 我在这做错了什么?

    -Thanks MAC

2 个答案:

答案 0 :(得分:1)

实现具有良好错误提示的验证的最简单方法是使用jquery的eVal插件来减少服务器交互的负担。

查看以下链接。

http://code.google.com/p/jquery-jval/

jQuery and jVal Validation Plug-in. Adding an attribute to an element

http://code.google.com/p/jquery-jval/source/browse/trunk/jVal.html

如果您只想使用javascript和jquery,那么请使用Javascript RegEx。查看javascript正则表达式并实现验证输入的方法。

如果你想按照相同的方法使用成功:和错误:.ajax()的属性,并使用你发送回ajax请求的msg.d成功获取你返回的信息。

答案 1 :(得分:0)

修改了ajax调用以使其正常工作

var html =  $.ajax({
            type: "POST",
            url: "UserProfile.aspx/CheckCurrentUserPassword",
            data: "{'userPasswrd':'" + $("input[id$='txtBoxPasswrd']").val() + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async:false
        }).responseText;

        if (html.toString().indexOf("false") >= 0) {
            isValid = false;
        }
        else {
            $("input[id$='txtBoxPasswrd']").next()
                       .removeClass()
                       .addClass('success')
                       .fadeIn('slow')
                       .text("Ok");
        }
    }