使用Jquery验证器添加方法进行唯一名称检查

时间:2015-01-29 20:06:10

标签: jquery ajax cakephp jquery-validate

我有这个名为模板名称的表单字段,我必须在我的cakephp驱动的应用程序中使用验证器addMethod函数检查其唯一性。我无法理解这是如何工作的以及如果名称不唯一它将如何验证它。它正在停止表单提交,如果名称是唯一的。下面是我的代码。请帮助我,并尝试纠正我的错误。

客户端代码

function validatefrm() {            
            var validate_frm = $("#EmailTemplateEditForm").validate({
                onkeyup: false,
            rules: {
                "data[EmailTemplate][template_name]": {
                    required:true,
                    validateTemplatename:true                        
                },
           },
           messages: {
                "data[EmailTemplate][template_name]": {
                    required:"<br/>Please Enter Template name !", 

                },
              }
            });
        jQuery.validator.addMethod("validateTemplatename",function (value,elememt){
        var inputElem = $('#EmailTemplateEditForm :input[name="data[EmailTemplate][template_name]"]'),
        data = { "template_name" : inputElem.val() },
        eReport = '';           
        $.ajax(
            {
            type: "POST",
            url: "<?php echo HTTP_ROOT.'email_templates/check_unique/'?>",
            dataType: "json",
            data: data,
            success: function(data) {                               
            if (data !== 'true'){
                return false;
            }
            else{                   
                return true;
            }
    },
    error: function(xhr, textStatus, errorThrown) {
        alert('ajax loading error... ... ');
        return false;
    }
}); 
}, ''); 

控制器中的服务器端编码

    function check_unique(){                
         if (isset($this->params['form']['template_name'])  && !empty($this->params['form']['template_name'])){
            $template_name = trim($this->params['form']['template_name']);           
            $totaltemplates = $this->EmailTemplate->find('count', array('conditions'=>array('EmailTemplate.template_name' => $template_name)));            
            if($totaltemplates == 0)    {               
            echo(json_encode(true));  //Name is Unique
            exit;
            }
            else{
            echo(json_encode(false)); //Name already exists         

            exit;
            }
        }
            else{
            echo "false"; //invalid post var
        }

       }
    }

0 个答案:

没有答案