我想实现更改用户密码的功能。它基本上是一个包含三个字段的表单。三个输入的 id 分别是 oldpassword
、newPassword
和 newPasswordAgain
。
当用户失去旧密码输入的焦点或提交表单时,我想检查数据库,看看旧密码是否输入正确。 如何使用 jquery 验证来实现此目的?
我添加了这样的自定义规则:
$.validator.addMethod("checkOldPass",function (value ,element) {
var validPass = false ;
$.post("/SMS/admin/users/checkOldPass.do" , {"empId":empId , "oldEmpPass":$.md5(value)},function (data) {
var msg = eval('('+data+')');
if(msg.resultFlag == 1) {
validPass = true ;
}
});
return validPass ;
} , "error!");
但问题是,在我的 post 方法返回结果标志之前,该方法已经完成,所以我总是收到错误消息。 我知道jquery验证有一个远程方法,但我不能使用它,因为我使用的是struts2-json插件,我的json结果总是封装在一个对象中,而远程方法需要一个 bool json结果。我无法直接从结果中得出 true 或 false。
最佳答案
您可以使用 $.ajax
并设置 async:false
: http://api.jquery.com/jQuery.ajax/
这将等待调用完成,并阻止您的页面。
也就是说,我不确定您是否应该使用 JavaScript 来验证密码。这是您通常希望在服务器上执行的操作,而且无论如何它的安全性为零。
关于jquery ajax 密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145858/