3

Yiiフォームがあります。一部のフィールドは必須です。フォームが送信されると、CSSクラス「エラー」がテキスト入力に追加される必要があります。私のコード:

          <?php $form=$this->beginWidget('CActiveForm', array(
                    'id'=>'contact-form',
                    'enableClientValidation'=>true,
                    'clientOptions'=>array(
                            'validateOnSubmit'=>true,
                    ),
            )); ?>
           <ul class="contact_form">
               <li class="row">
                   <?php echo $form->labelEx($model,'name'); ?>
                   <?php echo $form->textField($model,'name', array('class'=>'input')); ?>
                   <?php echo $form->error($model,'name'); ?>
               </li>
...

今、私はエラーメッセージでdivを取得します:

<div class="errorMessage" id="ContactForm_name_em_" style="">Laukelis „Vardas, pavardė“ negali būti tuščias.</div>

入力フィールドに「エラー」クラスを追加するにはどうすればよいですか?

4

2 に答える 2

6
<?php echo $form->textField($model,'name', array('class'=>'input' . ( $model->getError('name')  ? ' error' : ''))); ?>
于 2012-08-09T12:55:07.163 に答える
3

AJAX検証も行うには、多かれ少なかれ次のようなものを追加する必要があります。

<?php $form=$this->beginWidget('CActiveForm', array(
          'id'=>'contact-form',
          'enableClientValidation'=>true,
          'clientOptions'=>array(
              'validateOnSubmit'=>true,
              'afterValidate' => 'js:function(form, data, hasError) { 
                  if(hasError) {
                      for(var i in data) $("#"+i).addClass("error_input");
                      return false;
                  }
                  else {
                      form.children().removeClass("error_input");
                      return true;
                  }
              }',
              'afterValidateAttribute' => 'js:function(form, attribute, data, hasError) {
                  if(hasError) $("#"+attribute.id).addClass("error_input");
                      else $("#"+attribute.id).removeClass("error_input"); 
              }'
          ),
        )); ?>
于 2013-02-06T10:23:05.057 に答える