当我们像这样使用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'=>
答案 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 clientOptions
的afterValidate
和afterValidateAttribute
回调},你需要将错误的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')); ?>