Jquery plugins JQuery验证插件:使用自定义Ajax方法

Jquery plugins JQuery验证插件:使用自定义Ajax方法,jquery-plugins,jquery,jquery-validate,Jquery Plugins,Jquery,Jquery Validate,如果可能的话,寻找一些帮助 我通过对我的数据库进行ajax调用来验证blur上表单的email字段,该调用检查email字段中的文本当前是否在数据库中 // Check email validity on Blur $('#sEmail').blur(function(){ // Grab Email From Form var itemValue = $('#sEmail').val(); // Serialise data f

如果可能的话,寻找一些帮助

我通过对我的数据库进行ajax调用来验证blur上表单的email字段,该调用检查email字段中的文本当前是否在数据库中

    // Check email validity on Blur
       $('#sEmail').blur(function(){
       // Grab Email From Form
       var itemValue = $('#sEmail').val();
        // Serialise data for ajax processing
        var emailData = {
            sEmail: itemValue
        }
        // Do Ajax Call
         $.getJSON('http://localhost:8501/ems/trunk/www/cfcs/admin_user_service.cfc?method=getAdminUserEmail&returnFormat=json&queryformat=column', emailData, function(data){

                    if (data != false) {
                        var errorMessage = 'This email address has already been  registered';
                    }
                    else {
                        var errorMessage = 'Good'
                    }
                })
    });
我想做的是将这个调用合并到我的JQuery验证插件的规则中…例如

    $("#setAdminUser").validate({
      rules:{
             sEmail: {
                  required: function(){
                  // Replicate my on blur ajax email call here
                 }                  
             },
            messages:{
                sEmail: {
                    required: "this email already exists"       

            }
        });

想知道是否有办法实现这一点?非常感谢

您可以添加这样的自定义验证方法

 $.validator.addMethod('unique',
                     function(value) {
        $.get('http://localhost:8501/ems/trunk/www/cfcs/admin_user_service.cfc','?method=getAdminUserEmail&returnFormat=json&queryformat=column&emailData='+ value,
                            function(return_data) {
                                return return_data;
                            })
                         }
                         , "this email already exists"
                    );
然后将
unique
类添加到您的电子邮件字段中,或者您可以使用类似的方法

$.validator.addClassRules("unique-email", {
                unique: true
            });
试试这个:

$.validator.addMethod('unique', 
            function(value) {
         var result = $.ajax({ 
                             async:false, 
                             url:"http://yoursamedomain.com/checkemail",
                             data:'email='+ value, 
                             dataType:"text" }); 

         if(result .responseText) return true; else return false;

             } , "This email address has already been  registered");

因此,您正在执行一个AJAX请求:当您的自定义验证器返回true或false时,验证已经完成

您将需要使用async。另见本帖:

假设我们有一个自定义验证来检查唯一的移动设备,因此我们将添加一个新方法,如下所示来检查unqiue移动设备编号:

jQuery.validator.addMethod("uniqueMobile", function(value, element) {
    var response;
    $.ajax({
        type: "POST",
        url: <YOUR SERVER SCRIPT/METHOD>,
        data:"mobile="+value,
        async:false,
        success:function(data){
            response = data;
        }
    });
    if(response == 0)
    {
        return true;
    }
    else if(response == 1)
    {
        return false;
    }
    else if(response == 'logout')
    {
        return false;
    }
}, "Mobile is Already Taken");
jQuery.validator.addMethod(“uniqueMobile”),函数(值,元素){
var反应;
$.ajax({
类型:“POST”,
网址:,
数据:“移动=”+价值,
async:false,
成功:功能(数据){
响应=数据;
}
});
如果(响应==0)
{
返回true;
}
否则如果(响应==1)
{
返回false;
}
否则,如果(响应=='logout')
{
返回false;
}
},“手机已被占用”);

对于服务器端AJAX验证,请使用
远程
规则。这与标准jqueryajax请求对象相同。您的服务器必须返回字符串“true”作为有效值,或返回字符串“false”作为无效值,还可以传递一些字符串“此电子邮件已被接收”,这将被视为无效,并作为错误消息呈现:

$( "#myform" ).validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: {
        url: "check-email.php",
        type: "post",
        data: {
          username: function() {
            return $( "#username" ).val();
          }
        }
      }
    }
  }
});

阅读此处的文档

您好,我非常感谢您的回复,我已离开此项目,因此无法应用您的反馈。我相信它会派上用场,不过,下次我使用jQuery时。感谢我们使用
$.get()
来实现此目的?是的,您可以使用$.get()函数,因为它是通过jQuery向服务器进行ajax调用的抽象方法,但在这种情况下,您必须发送数据,例如:“mobile=“+附加到您请求的url的值。async:false将锁定接口