#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]; ?>
, поскольку идентификаторы, начинающиеся с чисел, недопустимы в HTML3. Большое спасибо! но моя переменная 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()"