【问题标题】:jquery validation plugin and check unique field?jquery验证插件并检查唯一字段?
【发布时间】:2010-01-12 10:13:24
【问题描述】:

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

在我需要通过 ajax 对电子邮件字段进行唯一检查以检查数据库之前,它一直运行良好。

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

感谢

【问题讨论】:

    标签: php cakephp jquery jquery-validate


    【解决方案1】:

    我认为您指的是使用 AJAX 调用(通过插件)来检查服务器的唯一电子邮件,是吗?

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

    有一篇关于此主题的 SO 帖子可供您探索:
    JQuery Validate Plugin - How to create a simple, custom rule?

    请注意,您必须自己实现服务器端脚本。

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

    【讨论】:

      【解决方案2】:

      语法简单

      $.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?

      【讨论】:

        【解决方案3】:

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

        示例:将电子邮件字段设为必填项、电子邮件并执行远程请求以检查给定地址是否已被占用。

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

        示例:将电子邮件字段设为必填,电子邮件并执行远程请求以检查给定地址是否已被占用。此外,http 方法设置为“post”,用户名与电子邮件地址一起发送。

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

        【讨论】:

          【解决方案4】:

          试试类似的东西

            $.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,如果你也想签入edit,那么排除自己;
          • params[2] 是要检查的 php 文件的路径。

          结果如下:

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

          PHP uniqueemail.php,在email字段中搜索value,如果返回空或者用户id等于$('#user_id') .val() 所以返回 true,否则返回 false。

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

          【讨论】:

            猜你喜欢
            • 2023-03-20
            • 1970-01-01
            • 2011-04-01
            • 1970-01-01
            • 2017-10-30
            • 1970-01-01
            • 1970-01-01
            • 2012-10-18
            • 1970-01-01
            相关资源
            最近更新 更多