Задать вопрос
@AlexAll

Почему при выборе категории не срабатывает js?

Привет, у меня есть форма выбора категорий, делаю так чтобы при выборе разных категорий выводились разные формы
Принцип работы такой, в php коде когда я выбираю категорию, тут присваивается число в value
'<input type="hidden" id="board-category_id" name="Board[category_id]" value="'.($model->isNewRecord ? '' : $category_id).'"/>

По идее далее js код должен видеть это число и выводить в этом блоке нужную форму
Но ничего не выводиться Почему?
Вот php код
<span class="element"></span>

    <div id="primer">
        
         <?php

        function getChildOptions($cats, $offset) {
            $str = "<ul class='dropdown-menu'>";
            foreach($cats as $cat) {
                if (empty($cat['children'])) {
                    $str .= "<li class='cat-select-item' data-value='".$cat['id']."' >".$offset.$cat['name']."</li>";
                } else {
                    $str .= "<li class='cat-select-item dropdown-submenu' data-value='".$cat['id']."' >".$offset.$cat['name'];
                    if (!empty($cat['children'])) $str .= getChildOptions($cat['children'], $offset);
                    $str .= "</li>";
                }
            }
            $str .= "</ul>";
            return $str;
        }

        $categories = \common\models\Category::getCategorys();
        if(!$model->isNewRecord){
        $id_category = \common\models\Board::getBoard($model->id);
        $category = \common\models\Category::getOneCategory($id_category->category_id);
            if($id_category->category_id == 0){
               $category_name = 'Выберите категорию...'; 
               $category_id = '';
                
            }else{
                 $category_name = $category->name; 
                 $category_id = $id_category->category_id;
            }
        }
  
        $dropdownMenu = '<div class="dropdown"><button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">'.($model->isNewRecord ? 'Выберите категорию...' : $category_name).'<span class="caret"></span></button>' . getChildOptions($categories, '') . '<input type="hidden" id="board-category_id" name="Board[category_id]" value="'.($model->isNewRecord ? '' : $category_id).'"/></div>';
        
        echo $dropdownMenu;
?>

</div><br />


Вот js код
<script>
$(function() {
    $('#primer').change(function () {
        var vibor =  $('#primer').find('input').val();
        if(vibor == '16') {
        	$('.element').text('Контент 1');
        } else if(vibor == 'str2') {
        	$('.element').text('Контент 2');
        } else if(vibor == 'str3') {
        	$('.element').text('Контент 3');
        } 
    });
 
});
</script>


Если выбрать категорию и через консоль браузера поискать селектор $('#primer').find('input').val(); то он находит и выводит число которое стоит в value инпута
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой 2 комментария
Решения вопроса 1
villiwalla
@villiwalla
HTML-верстка
Замените событие change на click, и повести его на все li, с них и получайте id категории.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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