Получение опции выбора при изменении выбора опции

#php #jquery

#php #jquery

Вопрос:

У меня есть список выбора, каждая опция содержит категорию ($ k [3]) в своем идентификаторе.

     <select name="page_from_link" class="my_select_list" >
                <OPTION VALUE="" >With:</OPTION>                
            <?php foreach($pages_created as $k) { 
                $i=0; ?>                        
                <OPTION id="<?php $i."-".$k[3]; ?>" class="pages_created" VALUE="<?php echo $k[0]; ?>" ><?php echo $k[1]; ?></OPTION>           
            <?php } ?>  
    </select>
  

У меня есть другой список выбора со всеми скрытыми параметрами в зависимости от категории предварительного выбора :

КАК:
$v) { ?>
» >

мой скрипт jquery не работает, как бы вы это сделали?

     $(document).ready(function(){         

        $(".my_select_list").change(function(){
            var array = $(this).find('option:selected').attr('id').split('-');
            var cat = array[1];

            alert("cat");

            $("#cat_" cat).show();
            $(".pages_created_option:not(#cat_" cat).hide();

        return false;       
        });
    }); 
  

Комментарии:

1. Я думаю, вы не можете смешивать this и > option ! Пожалуйста, попробуйте $(this).find("option").attr('id').split('-');

2. Не получается получить опцию выбора: s

Ответ №1:

$(this > option).attr(... => $(this).find('option:selected').attr (...

alert("cat"); => alert(cat);

$("#cat_" cat ")").show(); => $("#cat_" cat).show();

вам следует рассмотреть возможность использования firebug или внутренних инструментов разработки Chrome (на F12).

кстати, вы могли бы использовать optgroup вместо фиктивной опции:

 <select name="page_from_link" class="my_select_list" >
    <OPTGROUP label="With:">
        <?php foreach($pages_created as $k) { 
            $i=0; ?>                        
            <OPTION id="<?php $i."-".$k[3]; ?>" class="pages_created" VALUE="<?php echo $k[0]; ?>" ><?php echo $k[1]; ?></OPTION>           
        <?php } ?>  
    </OPTGROUP>    
</select>
  

Комментарии:

1. Спасибо за исправления, но строка var array = $(this).find(‘option’).attr(‘id’).split(‘-‘); кажется, не работает, я не могу получить опцию id с помощью find(‘option’). это странно. есть ли другой способ?

2. ха, правда, извините: используйте $(this).find('option:selected') (или $('option:selected', this) )!!! в качестве примечания вы хотите использовать что-то вроде <OPTION id="option<?php $i."-".$k[3]; ?> , поскольку идентификаторы, начинающиеся с чисел, недопустимы в HTML

3. Большое спасибо! но моя переменная cat не определена, это фрейм предупреждения, хотя $ k [3] существует, когда я печатаю r() массив $page_created для каждого из них.

4. какой браузер вы используете? что показывает опция, если вы ее проверяете? В любом случае, это работает в этой скрипке

Ответ №2:

вы могли бы использовать либо php-скрипт, либо js-скрипт с закодированными данными, содержащий innerHTML и изменяющий innerHTML родительского объекта (например, div) в зависимости от того, что вы выбрали в предыдущем поле выбора.

Ответ №3:

добавьте это в заголовок для javascript

 function showsel()
{if(document.getElementById('parentid').value=="id of the option that will triger the shild ")
    {document.getElementById('shild id').style.display="inline";}

else {document.getElementById('shild id').style.display="none";}
}
  

Затем добавьте для shild

 div id="shild id" style="display:none"
  

и родительскому

 div id="parent id" onchange"showsel()"