0

我有一个字段“CompanyName”,我需要进行验证。
这就是我所拥有的:

public function rules() {
    return array(
        array('CompanyName', 'compare', 'compareValue' => "google", 'operator' => '!=',    'message' => Yii::t('app', 'NOT Google'), 'on' => 'submit'),
    );
}


生成的JS:

if(value=="google") {
    messages.push("You wrote google!");
}

我想要的(包括 js 端的修剪):

if($.trim(value)=="google") {
    messages.push("You wrote google!");
}

我怎样才能做到这一点 ?

4

2 回答 2

3

查看CFilterValidator。我想你正在寻找这样的东西:

array('CompanyName', 'filter', 'filter'=>'trim')
于 2013-01-29T14:24:55.620 回答
0

这是我使用的解决方案,如果有人会遇到同样的问题:*它是一个仅实现客户端的自定义验证器

class EspecialValidator extends CValidator {

public $message;
public $compareValue;

/**
 * Validates the attribute of the object.
 * If there is any error, the error message is added to the object.
 * @param CModel the object being validated
 * @param Array the attribute being validated
 */
protected function validateAttribute($object, $attribute) {
    parent::validateAttribute($object, $attribute);
}

/**
 *  Returns the JavaScript needed for performing client-side validation
 * @param type $object
 * @param type $attribute
 */
public function clientValidateAttribute($object, $attribute) {
    $js = '
            if($.trim(value)=="' . $this->compareValue . '") {
                    messages.push("' . $this->message . '");
            }
        ';
    return $js;
}

}


从规则,在以下使用它:

array('fieldToCheck', 'ext.validators.EspecialValidator', 'compareValue' => 'TextToCompare', 'message' => 'failure message')
于 2013-01-30T09:10:46.623 回答