如何使用jQuery Validate Plugin检查记录是否存在?
问题描述:
我使用jQuery验证插件从下面网址如何使用jQuery Validate Plugin检查记录是否存在?
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
发现我只是想验证规则来检查记录存在于数据库或没有。我也做了一个像打击& ajax脚本使用$ .validator.addMethod添加它,但它不起作用。有人可以请建议如何做到这一点?
$.validator.addMethod("check_exists", function(value) {
$.ajax({
type: "POST",
url: "xyz.com/check_exists.php",
data: $("#frmEdit").serialize(),
success: function(result){
if(result=="exists")
return false;
else
return true;
},
});
}, 'This record is already exists');
答
验证插件有一个内置的您提供一个网址remote
选项和请求将从插件中进行到服务器。对于自己在做什么,没有必要创造一种全新的方法
http://docs.jquery.com/Plugins/Validation/Methods/remote#options
答
你碰到的问题是:(1)AJAX调用是异步的,因此AJAX调用完成之前该方法返回(2)从处理器回调处理程序返回内return语句而不是验证功能。 解决此问题的最简单方法是使用remote验证方法。如果你想自己做,你需要使AJAX调用同步(async: false
)并将结果捕获到函数返回的变量中。
$.validator.addMethod("check_exists", function(value) {
var status;
$.ajax({
type: "POST",
async: false,
url: "xyz.com/check_exists.php",
data: $("#frmEdit").serialize(),
success: function(result){
status = result=="exists";
},
});
return status;
}, 'This record is already exists');
nopes,甚至也不起作用。我以前已经设置了ajax async false,但仍然不起作用。它没有给出任何错误,但它没有验证它。 – aslamdoctor 2012-03-10 13:23:32
@aslamdoctor你注意到我做的其他改变?仅仅使它成为'异步:错误'是不够的,你必须捕获结果。不过,你应该尝试使用'remote'验证选项。在添加链接之前,您可能已阅读我的答案。 – tvanfosson 2012-03-10 13:28:55