Как отключить кнопку отправки формы до ajax валидации в Yii?

Добрый вечер. Не подскажете, как сделать кнопку отправки формы в CActiveForm неактивной, до тех пор, пока не пройдет ajax валидация?
  • Вопрос задан
  • 4646 просмотров
Решения вопроса 1
Sander_Li
@Sander_Li
Backend developer
Можно вместо CHtml::ajaxSubmitButton использовать CHtml::submitButton
Пример
div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'user-form',
        'enableAjaxValidation'=>true,
        'clientOptions'=>array(
            'validateOnSubmit'=>true,
            'afterValidate'=>'js:function(form,data,hasError){
                        if(!hasError){
                                $.ajax({
                                        "type":"POST",
                                        "url":"'.CHtml::normalizeUrl(array("test/eleven")).'",
                                        "data":form.serialize(),
                                        "success":function(data){$("#test").html(data);},
                                        
                                        });
                                }
                        }'
        ),
)); ?>

        <p class="note">Fields with <span class="required">*</span> are required.</p>

        <?php echo $form->errorSummary($model); ?>

        <div class="row">
                <?php echo $form->labelEx($model,'username'); ?>
                <?php echo $form->textField($model,'username',array('size'=>60,'maxlength'=>64)); ?>
                <?php echo $form->error($model,'username'); ?>
        </div>

        <div class="row">
                <?php echo $form->labelEx($model,'age'); ?>
                <?php echo $form->textField($model,'age'); ?>
                <?php echo $form->error($model,'age'); ?>
        </div>

        <div class="row">
                <?php echo $form->labelEx($model,'email'); ?>
                <?php echo $form->textField($model,'email',array('size'=>60,'maxlength'=>128)); ?>
                <?php echo $form->error($model,'email'); ?>
        </div>

        <div class="row buttons">
                <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
        </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

<!-- AJAX update div element -->

<div id="test"></div>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mikitachu
www.yiiframework.com/doc/api/1.1/CActiveForm#clien...
В beforeValidate блокировать кнопку (например, задать ей атрибут disabled), в afterValidate возвращать все обратно, то есть удалять добавленный атрибут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы