【发布时间】:2011-10-21 14:46:26
【问题描述】:
对不起,伙计们,我将粘贴相当混乱的代码,但如果可以的话,请帮助我 实际上我正在实现一个密码更改功能,在更改密码按钮的 onclientclick 事件中,我正在调用一个 javascript 函数,在该函数中我正在验证三件事
- 当前密码与旧密码是否匹配(通过ajax调用)
- 新密码和确认密码字段是否包含相同数据。
- 当然还有任何字段是否为空白
第二个和第三个工作正常,但在第一种情况下,即使密码与旧密码不匹配,而满足其他条件,它正在更改密码
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