我有一个从数据库数组填充的列表,如下所示:
$i = 0;
foreach ($category_label as $value) {
echo '<input id="'.$category_label[$i].'" type="checkbox" name="q1" value="'.$category_label[$i].'">
<label for="'.$category_label[$i].'">'.$category_label[$i].'</label><br />';
$i++;
可以看到,这将从数据库数组中构建一个带有复选框的项列表。下一步是,如果用户选择了其中一个复选框,我需要显示一个新的关联项数组。这里是javascript和相关的<div>
,我已经开始这样做:
JS:
$(function() {
$('input[name=q1]').on('change', function () {
var valu = this.value;
if (this.checked) {
$('#q2').append("<li><a href='#'>" + valu + "</a></li>");
$('#question2').show();
} else {
var lis = $("#q2").find('li');
lis.each(function () {
if ($(this).text() === valu) {
$(this).remove();
}
});
if (lis.length === 0) {
$('#question2').hide();
}
}
});
});
有关PHP:
<div id="question2" class="question">
<p>Results:</p>
<ul id="q2"></ul>
</div>
好的,那么现在,js
脚本中的var valu = this.value;
在question2
div中显示选中的项目。相反,我需要从选中的项目中获得类别id值,然后拉出具有关联父类别的所有子项目来填写列表。我如何修改我的php和js这样做?
更新:
这个问题得到一些反馈,认为它太宽泛了。让我进一步说明这个问题,以便找到一个好的解决办法。我修改了第一个PHP脚本,将所选项的类别id作为值拉到输入项中。下面是更新:
echo '<input id="'.$category_label[$i].'" type="checkbox" name="q1" value="'.$category_id[$i].'"><label for="'.$category_label[$i].'">'.$category_label[$i].'</label><br />';
现在,我只需要找到一种方法通过javascript传递这个值,并获得与该类别值相关联的项目数组,以显示在输出列表中。
我猜你想做的是这样的:
HTML:<input id="101" type="checkbox" name="q1" value="aaa">
<label for="101">category A</label><br />
<input id="102" type="checkbox" name="q1" value="bbb">
<label for="102">category B</label><br />
<input id="103" type="checkbox" name="q1" value="ccc">
<label for="103">category C</label><br />
<div id="question2" class="question">
<p>Results:</p>
<ul id="q2"></ul>
</div>
JavaScript: $(function () {
$('input[name=q1]').on('change', function () {
var valu = $(this).val();
if ($(this).is(':checked')) {
$('#q2').append("<li><a href='#'>" + valu + "</a></li>");
$('#question2').show();
} else {
var lis = $("#q2").find('li');
lis.each(function () {
if ($(this).text() === valu) {
$(this).remove();
}
});
if (lis.length === 0) {
$('#question2').hide();
}
}
});
});
DEMO: http://jsfiddle.net/2Yz8j/3/