修改CI的form验证错误输出格式,配合jq的form 验证格式

来源:互联网 发布:网络教师兼职平台 编辑:程序博客网 时间:2024/05/01 06:45

因为jq 的验证检测html中的属性for="input的name"和generated="true"相符时才替换,否则会新插入一个html标签,这样会导致jq不会消除ci的错误提示,如ci提示"验证码错误",当用户输入正确的验证码时,ci的提示并不会被jq的替换或隐藏,逻辑上不符合.

比较方便的修改是直接修改ci的form错误输出提示html标签格式成jq的相同格式即可;

 

修改ci的Form_validation.php类中的方法错误输出格式;同时可以把它的<p></p>标签改成其它inline格式,一般我们很少用得上换行格式的标签输出错误,大多时候,我们是直接在input的后面输出提示的;然后每次使用都设置这个标签很麻烦.

修改如下

  return '<label for="' .$field.'" generated="true" class="error">'. $prefix.$this->_field_data[$field]['error'].$suffix .'</label>';//修改配合jq的validation

--------------

    /**
     * Get Error Message
     *
     * Gets the error message associated with a particular field
     *
     * @access    public
     * @param    string    the field name
     * @return    void
     */
    function error($field = '', $prefix = '', $suffix = '')
    {
        if ( ! isset($this->_field_data[$field]['error']) OR $this->_field_data[$field]['error'] == '')
        {
            return '';
        }

        if ($prefix == '')
        {
            $prefix = $this->_error_prefix;
        }

        if ($suffix == '')
        {
            $suffix = $this->_error_suffix;
        }

        return '<label for="' .$field.'" generated="true" class="error">'. $prefix.$this->_field_data[$field]['error'].$suffix .'</label>';//修改配合jq的validation
    }

------------------

修改后ci错误输出格式

----

<span class="verifyERR"><label class="error" generated="true" for="verify"><label>验证码有误</label></label></span>

 

----

jq的错误插入动作已被修改成在<span class="input的name+ERR">标签内插入方式;

-------------------

 


jQuery.extend(
    jQuery.validator.defaults, {
        errorPlacement:function(error, element) {//自定错误显示对象
            var formId = element[0].form ? element[0].form.id : null;
            
            if (! formId){
                return alert('form对象必须增加ID属性');
            }
            
            var tipClass = element[0].name + 'ERR';
            var tipObj = $('#' + formId + ' .' + tipClass);
            
            if (! tipObj.length){
                return alert('在form找不到出错提示对象: <span class=' + tipClass + '></span>,需要增加');
            }else{
                error.appendTo( tipObj );
            }
        }
    }   
);

 

----------

ci的错误提示

修改CI的form验证错误输出格式,配合jq的form 验证格式 - qidizi - qidizi 的博客

---

输入错误后,jq错误提示,替换掉ci的错误提示

修改CI的form验证错误输出格式,配合jq的form 验证格式 - qidizi - qidizi 的博客