jquery验证插件并检查唯一字段?

时间:2010-01-12 10:13:24

标签: php cakephp jquery jquery-validate

我目前正在我的新项目中使用带有cakephp的jQuery验证插件。

它完美无缺,直到我需要通过ajax对电子邮件字段进行独特检查以检查数据库..

我不知道如何让插件对来自db的电子邮件进行独特的验证。

感谢名单

4 个答案:

答案 0 :(得分: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 :(得分: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?

答案 2 :(得分: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();
              }
          }
     }
  }
 }
});

答案 3 :(得分: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")
    );

在上面的代码中:

  • path是应用程序的根路径;
  • 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。

请注意, async 属性设置为 false ,这是一个后退,但是会完成这项工作。