2012-03-10 66 views
2

我使用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'); 

回答

0

你碰到的问题是:(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'); 
+0

nopes,甚至也不起作用。我以前已经设置了ajax async false,但仍然不起作用。它没有给出任何错误,但它没有验证它。 – aslamdoctor 2012-03-10 13:23:32

+0

@aslamdoctor你注意到我做的其他改变?仅仅使它成为'异步:错误'是不够的,你必须捕获结果。不过,你应该尝试使用'remote'验证选项。在添加链接之前,您可能已阅读我的答案。 – tvanfosson 2012-03-10 13:28:55