有没有办法让 Yii CActiveForm 突出显示输入字段


Is there a way to have Yii CActiveForm to highlight input fields?

>当我们像这样使用CactiveForm Widget时:

<?php echo $form->labelEx($model,'name'); ?>
<?php echo $form->textField($model,'name'); ?>
<?php echo $form->error($model,'name'); ?>

我们收到验证消息,但是,输入字段本身是文本字段,没有得到任何类。

我希望,当 Yii 验证时,一个类出现在输入字段中,以便它可以突出显示。

CHtml::activeTextField实际上是这样做的:

<?php echo CHtml::activeLabel($model,'name'); ?>
<?php echo CHtml::activeTextField($model,'name') ?>

有什么方法可以使用CActiveForm来做到这一点吗?

添加:

$form=$this->beginWidget('CActiveForm', array(
    'id'=>'event-form',
        'enableClientValidation' => true,
        'clientOptions'=>

对于要附加的默认错误类,您需要具有默认自动生成表单中的表单结构,如下所示:

<div class="form">
  <?php $form=$this->beginWidget('CActiveForm', array(
    ...
  )); ?>
    <div class="row">
        <?php echo $form->labelEx($model,'name'); ?>
        <?php echo $form->textField($model,'name'); ?>
        <?php echo $form->error($model,'name'); ?>
    </div>
    ...
</div>

编辑:这意味着你需要为每个输入字段提供一个inputContainer,因为这就是jquery.activeform.js的默认css和默认实现的方式。要更改此行为,我们可以简单地将另一个 css 规则添加到默认表单.css文件中,默认情况下,该文件仅将错误添加到 div.form 中的 div 中。

/*
 default css
*/
div.form div.error input,
div.form div.error textarea,
div.form div.error select,
div.form input.error,
div.form textarea.error,
div.form select.error
{
    background: #FEE;
    border-color: #C00;
}

因此,您可以根据自己的喜好进行更改,但最低要求是:

div.error input, div.error textarea, div.error select {/* styles */}

如果上述方法不起作用,并且您想单独为输入元素分配错误类,那么您可以使用 CActiveForm 的 clientOptionsafterValidateafterValidateAttribute回调,您需要将错误 css 类添加到输入中,并且还有一个 css 规则来匹配此类输入:

input.error, textarea.error, select.error {/*styles*/}

如果您使用某种形式的客户端验证,就像您在 beforeValidate 中所做的那样,您需要addClass('error');输入,并使用上述 css。

您可以使用 htmlOptions 参数将类应用于元素,该参数允许您将属性传递给标记。 例如:

<? php echo $form->textField($model, 'name', array('class'=>'textFieldClass')); ?>