2010-01-12 62 views
1

我目前在我的新项目中使用了cakephp的jQuery验证插件。jquery验证插件并检查唯一字段?

它的工作完美,直到我需要通过Ajax独特的检查,以电子邮件字段,检查与数据库..

我不知道如何把这个插件使从数据库到电子邮件的唯一验证。

感谢名单

回答

3

我想你指的使用AJAX调用(通过插件)与服务器进行检查独特的电子邮件,啊?

我会建议使用验证插件的addMethod创建一个自定义验证,您可以在其中调用AJAX调用(它将成为jQuery核心的一部分)。

有一个SO张贴关于这个主题,你可以探索:
JQuery Validate Plugin - How to create a simple, custom rule?

请注意,您将不得不自己实现服务器端脚本。

这里的另一篇文章应该是有用的(使用jQuery和PHP):
Check email already exist – Ajax – Jquery

1

的语法很简单

$.validator.addMethod("eventName", 
    function(value, element) { 
      // condition returns true or false 
    }, "Error message to display"); 
}); 

事件名字叫做形式

<input type="text" name="name" class="eventName" /> 

如果有任何疑问,请参阅此链接

jQuery Validate Plugin - How to create a simple custom rule?

1

如果要检查电子邮件是否唯一,可以使用远程规则。 距离:http://jqueryvalidation.org/remote-method

实施例:使所需的电子邮件字段,电子邮件和确实的远程请求,以检查是否在给定的地址已被使用。

$("#myform").validate({ 
    rules: { 
    email: { 
    required: true, 
    email: true, 
    remote: "check-email.php" 
    } 
    } 
}); 

实施例:使所需的电子邮件字段,电子邮件和确实的远程请求,以检查是否在给定的地址已被使用。另外,http方法设置为“发布”,并且用户名与电子邮件地址一起发送。

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

试着这么做

$.validator.addMethod("unique", 
      function(value, element, params) { 
       var isUnique = false; 
       if(value == '') 
         return isUnique; 

       id_send= ''; 
       if(params[1] !='') 
        id_send ='id='+params[1]+'&'; 

       $.ajax({ 
        url: "path"+params[2], 
        type : 'GET', 
        async: false, 
        data: id_send+'field=' + params[0] + "&value=" + value, 
        dataType: 'json', 
        cache: true, 
        success: function(data){ 
         isUnique = data; 
        } 
       }); 

       return isUnique; 

      }, 
      jQuery.validator.format("Value already in use") 
    ); 

在上面的代码:

  • 路径是应用程序的根路径;
  • params [0]是要检查唯一的属性的名称;
  • params [1]是对象的id,如果你想检查编辑也是这样,所以排除自己;
  • params [2]是要检查的php文件的路径。

的东西等导致的:

rules: 
     { 
      email: { 
       required: true, 
       unique:['email', $('#user_id').val(),'uniqueemail.php'], 
       email: true 
      }, 

的PHP uniqueemail.php,在现场电子邮件搜索,如果返回空或ID的用户等于$('# user_id')。val()所以返回true,否则返回false。

注意,异步属性设置,这是一个挫折,但会做的工作。