Ответы пользователя по тегу JavaScript
  • Как проверить результат валидации на клиенте определенного поля в YII2?

    @SlimSavernake Автор вопроса
    $('#myForm').on('afterValidateAttribute', function(event, messages) {
    	if(messages.length) {
    		alert('Ошибка валидации');
    		return false;
    	}
    })
    Ответ написан
    Комментировать
  • Как динамически добавлять нужные поля через ajax в yii2?

    @SlimSavernake Автор вопроса
    Короче разделил сущности, как сказали. И загружаю в модальное окно всю форму нужного типа недвижимости.

    <?php Modal::begin([
        'size' => 'modal-md',
        'header' => '<h4 class="modal-title">Добавление объявления</h4>',
        'toggleButton' => [
            'tag' => 'button',
            'class' => 'btn btn-primary',
            'id' => 'modal-button',
            'label' => 'Добавить объявление',
        ]
    ]); ?>
    
    <div class="form-horizontal">
        <div class="form-group">
            <label class="col-lg-4 control-label">Тип недвижимости</label>
            <div class="col-lg-7">
                <select id="rform" class="form-control">
                    <option value>Выберите тип недвижимости</option>
                    <option value="0">Квартира</option>
                    <option value="1">Дом/Часть дома</option>
                </select>
                <div class="help-block"></div>
            </div>                                        
        </div>
    </div>
    <div class="modal-form"></div>
    <?php Modal::end(); ?>
    
    <script>var url = '<?= Url::to(['realty/default/showform']); ?>';</script>
    
    <?php
    $script = <<< JS
    $(document).ready(function(){
        $('#rform').on('change', function() {
            var val = $('#rform').val();
            $.ajax({
                type: 'POST',
                url: url,
                data: {type:val},
                beforeSend: function(){
                    $('.modal-form').html('<div style="text-align:center; margin:10px"><img src="loading.gif" /></div>');
                },
                success: function(data){
                    $('.modal-form').html(data);
                }
            });
        });
    });
    
    
    
    JS;
    $this->registerJs($script, View::POS_END);
    ?>


    Контроллер
    public function actionShowform()
        {
            if (Yii::$app->request->isAjax) {
                $type = $_POST['type'];
                if ($type == 0) {
                    return $this->renderAjax('/apartment/_form', [
                        'model' => new Apartment,
                    ]);
                } else if ($type == 1) {
                    return $this->renderAjax('/house/_form', [
                        'model' => new House,
                    ]);
                }
            } 
        }
    Ответ написан
    Комментировать