Yii2 не работает jQuery в форме

335
13 марта 2017, 12:07

Всем здрасте, нужна помощь! Делаю рабочий график клиента, во VIEW в форме есть div и я пытаюсь с помощью jquery прятать определенные блоки: Выходные - то прячется все и остается только кнопки сохранить или отмена, или наоборот когда стоит Рабочий день то выбирается рабочие время и еще с низу можно поставить чекбокс и выбрать перерыв, и после нажатия на чекбокс появляется div блок с выбором времени на перерыв.

Рабочий вариант первой формы

Другая форма с не рабочим вариантом

Сам jquery

$(function () {
$('#hidden_work_time').show();
$('#type').change(function () {
    if ($('#type').val() == '2') {
        $('#hidden_work_time').hide();
    } else {
        $('#hidden_work_time').show();
    }
});

});

и сам вид во view

<table class="table">
<tr>
    <td>День</td>
    <td>Время работы</td>
    <td>Перерыв</td>
    <td></td>
</tr>
<?php foreach ($weeks as $k => $v) : ?>
    <?php $form = ActiveForm::begin(); ?>
    <tr>
        <td><?= $v ?></td>
        <td>
            <?php foreach ($workGraph as $item): ?>
                <?= $item->week == $v ? $item->work_start . ' - ' . $item->work_end : false; ?>
            <?php endforeach; ?>
        </td>
        <td>
            <?php foreach ($workGraph as $item): ?>
                <?= $item->week == $v ? $item->break_start . ' - ' . $item->break_end : false ?>
            <?php endforeach; ?>
        </td>
        <td>
            <?php Modal::begin([
                'size' => 'modal-sm',
                'toggleButton' => [
                    //'tag' => 'a',
                    'label' => 'Редактировать',
                    //'href' => '#lfake_id',
                    //'data-target' => '#lfake_id'
                ],
            ]);
            ?>
            <div class="col-md-12">
                <?= $form->field($model, 'status_week')->dropDownList(Profile::$days, ['id' => 'type'])->label(false); ?>
            </div>
            <div id="hidden_work_time">
                <div class="col-md-6">
                    <?= $form->field($model, '[$k]work_start')->widget(TimePicker::classname(),
                        [
                            'value' => '00:00',
                            'pluginOptions' => [
                                'showMeridian' => false,
                            ]
                        ])->label('');
                    ?>
                </div>
                <div class="col-md-6">
                    <?= $form->field($model, "[$k]work_end")->widget(TimePicker::classname(),
                        [
                            'value' => '00:00',
                            'pluginOptions' => [
                                'showMeridian' => false,
                            ]
                        ])->label('');
                    ?>
                </div>
                <div class="col-md-12">
                    <?= $form->field($model, '[$k]has_break')->checkbox(['onchange' => 'showBreakTime(this.checked)']) ?>
                </div>
                <div id="hidden_break_time" style="display: none">
                    <div class="col-md-6">
                        <?= $form->field($model, "break_start")->widget(TimePicker::classname(),
                            [
                                'value' => '00:00',
                                'pluginOptions' => [
                                    'showMeridian' => false,
                                ]
                            ])->label('');
                        ?>
                    </div>
                    <div class="col-md-6">
                        <?= $form->field($model, "[$k]break_end")->widget(TimePicker::classname(),
                            [
                                'value' => '00:00',
                                'pluginOptions' => [
                                    'showMeridian' => false,
                                ]
                            ])->label('');
                        ?>
                    </div>
                </div>
            </div>
            <div class="clear"></div>
            <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']); ?>
            <?= Html::submitButton('Отмена', ['class' => 'btn btn-danger', 'data-dismiss' => 'modal', 'aria-hidden' => 'true']); ?>
            <?php Modal::end(); ?>
        </td>
    </tr>
    <?php $form = ActiveForm::end() ?>
<?php endforeach; ?>

И еще такой вопрос дни недели я раскладываю foreach, и получается что для каждого дня есть свое время и перерыв field($model, '[$k]work_start'), вот только я не могу понять как получить сам массив [$k]work_start - ПН|09:00, принимаю в контроллере и в модели происходит сам updateProfile.

Заранее спасибо!

Answer 1

Проблема я думаю тут не в Yii, а в js, селектор с id должен быть только 1 на странице, а у вас он в каждом окне получается, замените их на классы, к примеру:

<div id="hidden_work_time">

на

<div class="hidden_work_time">

И в списке тоже замените:

<?= $form->field($model, 'status_week')->dropDownList(Profile::$days, ['id' => 'type'])->label(false); ?>

на

<?= $form->field($model, 'status_week')->dropDownList(Profile::$days, ['class' => 'type'])->label(false); ?>

И так же js код:

$(function () {
    $('.hidden_work_time').show();
    $(document).on('change', '.type', function() {
        if ($(this).val() == '2') {
            $(this).closest('.hidden_work_time').hide();
        } else {
            $(this).closest('.hidden_work_time').show();
        }   
    });
});

Теперь должно работать всё.

Answer 2

js

$('.trigger').click(function() {
$('.hidden_work_time').toggle(); });

сам input в класс form-control, чтоб стили не слетали

 <?= $form->field($model, 'status_week')->dropDownList(Profile::$days, ['class' => 'form-control trigger'])->label(false); ?>
READ ALSO
странная работа цикла

странная работа цикла

вот, что из себя представляет массив $orders1

244
Как упростить код PHP?

Как упростить код PHP?

Сдается, что есть более простой способ выводаСпасибо

262
Проблема с curl vk.com

Проблема с curl vk.com

При попытке сделать GET запрос к VKcom для поиска определенной композиции

301
Не могу подключить MySql

Не могу подключить MySql

Здравствуйте, я не давно сменил хостинг для сайта и у меня перестала подключатся база данных и на страницу не выводит никакой ошибки, а на предыдущем...

331