我很抱歉,我要粘贴相当混乱的代码,但如果可以,请帮助我 实际上我正在实现一个密码更改功能,其中更改密码按钮的onclientclick事件我正在调用一个javascript函数,我正在验证三件事
第二个和第三个工作正常,但在第一种情况下,即使密码与旧密码不匹配,而其他条件已满足,则更改密码
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
答案 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");
}
}