【问题标题】:password validation in jqueryjquery中的密码验证
【发布时间】:2011-10-21 14:46:26
【问题描述】:

对不起,伙计们,我将粘贴相当混乱的代码,但如果可以的话,请帮助我 实际上我正在实现一个密码更改功能,在更改密码按钮的 onclientclick 事件中,我正在调用一个 javascript 函数,在该函数中我正在验证三件事

  1. 当前密码与旧密码是否匹配(通过ajax调用)
  2. 新密码和确认密码字段是否包含相同数据。
  3. 当然还有任何字段是否为空白

第二个和第三个工作正常,但在第一种情况下,即使密码与旧密码不匹配,而满足其他条件,它正在更改密码

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 调用方法,它对于其他两个验证工作正常。 我在这里做错了什么??

-谢谢 马克

【问题讨论】:

  • 你为什么要eval(msg.d) 试图将其解析为json??
  • 其实我只需要检查ajax调用方法返回的值所以我用了这个
  • 你可以在firebug上使用console.log(msg)检查它,或者chrome开发者工具会显示你
  • 根据该值,我正在向用户显示成功或错误消息

标签: jquery validation


【解决方案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() 的 success: 和 error: 属性,并使用您发送回 ajax 请求的 msg.d 成功获取返回的信息。

【讨论】:

    【解决方案2】:

    修改了 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");
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      相关资源
      最近更新 更多