1

$form->error() で定義されている ajax 検証中に読み込みアイコンを表示したい。私は何をする必要がありますか?

ドキュメントから:

[validatingCssClass: 文字列、関連する入力が現在 AJAX を介して検証されているコンテナーに割り当てられる CSS クラス。デフォルトは「検証中」です。]

<style type="text/css">
.validating {

    background-color: #FF02FF;
}
</style>

   <?php /** @var TbActiveForm $form */
    $form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
        'id'=>'prezentacija-form',
        'enableAjaxValidation'=>true,
        'htmlOptions'=>array('class'=>'well'),
            'clientOptions'=>array(
                'validateOnType'=>true,

            ),
    )); ?>

  .....

  <?php echo $form->error($model,'naziv', array('validateOnType'=>true)); ?>
4

1 に答える 1

0

CSS2 を使用してこれを行うことができbackground-imageますbackground-position。サンプル:

/* I have a new styles.css file in project/css folder */
.validating {
    background-image: url(../images/loading.gif); /* my image is in project/images folder */
    background-position: right center; /* positioning has to be done correctly */
    background-repeat: no-repeat;
}

画像が適切なサイズであることを確認してください。または、CSS3 のbackground-sizeプロパティを使用できます (最初にブラウザの互換性を確認してください)。


Yii のフロントでは、フォームの に何も追加する必要はありません。clientOptionsデフォルトvalidatingCssClassはすでにvalidatingです:

'clientOptions'=>array(
    'validateOnType'=>true,
    'validatingCssClass'=>'validating'
    // if the class is validating, it's already applied, so the line is redundant, use only if your validating class is different
),

ローカルホストでテストしている場合、ネットワークの遅延がないため、変更が発生していることに気付かないことは明らかですが、それをテストして適切に配置するには、それを確認する必要があるため、検証アクション メソッドに遅延を導入できます。 、phpのusleepを使用:

public function actionActionId() {
    $model=new Prezentacija;
    usleep(10000); // for me 10000 microseconds was enough delay
    $this->performAjaxValidation($model);
    // ... rest of your code ...
}
于 2012-12-18T09:45:53.683 に答える