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

时间:2012-06-26 16:49:30

标签: php yii

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

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

我们得到验证消息,但输入字段本身是 textfield ,不会得到任何类。

我希望,当 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'=>

2 个答案:

答案 0 :(得分:1)

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

<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规则添加到默认的 form.css 文件中,默认情况下该错误仅会将错误添加到div.form内的 divs

/*
 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's clientOptionsafterValidateafterValidateAttribute回调},你需要将错误的css类添加到输入中,并且还有一个css规则来匹配这些输入:

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

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

答案 1 :(得分:0)

您可以使用htmlOptions参数将一个类应用于元素,该参数允许您将属性传递给标记。 e.g:

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