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 执行此操作,设置 a 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
),

如果您在 localhost 上进行测试,显然您不会注意到发生的变化,因为没有网络延迟,但是要对其进行测试并正确定位,您需要看到它,因此您可以在验证操作方法中引入一些延迟,使用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 回答