Добавить input в checkboxlist , jquery php

423
14 января 2017, 14:55

Здравствуйте. Использую PHP+Yii2 framework. Мне нужно динамически изменять варианты input в чекбокс листе. По нажатию на определенный элемент - посылаю запрос в контроллер, с параметрами нужных input'ов. Из контроллера возвращаю html теги с этими input'ами. Выглядит это вот так

$('input[name="area[]"]').change(function() {
       $.post("/site/complexcity?city="+$(this).val()+"&type="+check_now, function( data ) { //передаем параметры
            $("#complex").html(data); //вставляем в блок вывода чекбокс листа
        });

Контроллер

 public function actionComplexarea($area, $type)
    {
        $data = ArrayHelper::map(Complex::find()->where(['area_id' => $area])->andWhere(['type' => $type])->all(), 'id', 'name');
        foreach ($data as $id => $value)
        {
            echo "<div class=\"custom-checkbox\">
                    <input class='an_chekbox' type='checkbox' name='complex_area' value='$id' id='complex_area$id'>
                    <label for='complex_area$id'>$value</label>
                   </div>";
        }
        //echo Json::encode($data);
    }

Само поле

<?= $form->field($model, 'complex', ['options' => ['tag' => false]])->checkboxList(ArrayHelper::map(\common\models\Complex::find()->where(['type' => 1])->all(), 'id', 'name'),
        [
            'item' => function ($index, $label, $name, $checked, $value) {
                $check = $checked ? ' checked="checked"' : '';
                return "<div class=\"custom-checkbox\">
                        <input class='an_chekbox' type='checkbox' name='$name' value='$value' id='$name$value' $check>
                        <label for='$name$value'>$label</label>
                     </div>";
            }
        ])->label(false); ?>

По такой схеме все работает, запрос возвращает с нужными input'ами, но каждый раз заменяет все элементы на новые. Вот из-за этого атрибута $("#complex").html(data); - Возвращает или изменяет html-содержимое выбранных элементов.

Скажите, как можно не заменять, а добавлять input'ы в checkboxList ?

UPD. заменил html на append - $("#complex").append(data);. Теперь при каждом клике отправляется запрос и добавляется элемент . Вопрос можно ли проверить input на уникальность(по значению $value) , и если да - то добавлять этот input в checkbox list? Если распечатать переменную data - будет код вот такого типа -

    <div class="custom-checkbox">
        <input class='an_chekbox' type='checkbox' name='complex_city' value='2' id='complex_city2'>
        <label for='complex_city2'>GG complex</label>
</div>
<div class="custom-checkbox">
        <input class='an_chekbox' type='checkbox' name='complex_city' value='3' id='complex_city3'>
        <label for='complex_city3'>New GK</label>
</div>
READ ALSO
Проблема с роутингом в Yii2

Проблема с роутингом в Yii2

Решил изучить php фрэймворк - Yii2Но столкнулся с проблемой роутинга

386
Разбить строку в php формата: 4044_90548_9079

Разбить строку в php формата: 4044_90548_9079

Подскажите, как разбить строку формата: 4044_90548_90791, чтобы в итоге получилось: array(4044, 4044_9054, 4044_90548_90791);

314
Не могу понять как вообще практиковать php [требует правки]

Не могу понять как вообще практиковать php [требует правки]

Изучаю php, читаю книги и нигде не могу найти как найти сервер? Где писать то? Где все пишут? Сервера дорогие

352