假设我有这个数组:
Array(
[0] => Array(
[Brand] => 'Toyota',
[Model] => 'Camry',
[Color] => 'Red',
[Year] => 2002
)
[1] => Array(
[brand] => 'Nissan',
[Model] => 'Skyline',
[Color] => 'White',
[Year] => 2005
)
[2] => Array(
[Brand] => 'Honda',
[Model] => 'Civic',
[Color] => 'Green',
[Year] => 2000
) )
然后在下拉列表中我有“键”品牌+型号+颜色+年份
问题:如何使用JQuery(AJAX)填充另一个下拉列表,当我点击一个键时,使用“值”?
示例:当我点击模型时,我想填充另一个下拉列表,其值为凯美瑞 + 天际线 + 思域,如果我点击颜色,用红色 + 白色 + 绿色等进行傀儡,依此类推
干杯!
答案 0 :(得分:2)
如果您的数组是cars[]
并且您的选择框分别具有“sourceBox”和“targetBox”的ID,则以下代码将获取#sourceBox中所选项目的文本并使用所有等效项填充#targetBox数组中的值。因此,在#sourceBox中选择“color”将使用“red”,“white”和“green”填充#targetBox。
$(document).ready(function(){
$('#sourceBox').change(function(){
var options = "";
for (var i = 0; i < cars.length; i++){
options += '<option>'
+ cars[i][$('#sourceBox option:selected').text()]
+ '</option>';
}
$('#targetBox').html(options);
});
});
答案 1 :(得分:0)
只是一段非常通用的代码。您应该更具体(显示您希望从该PHP数组创建的HTML)。无论如何它在这里。这将只使用PHP数组中的值创建JS数组。那么应该很容易与那些人一起工作:
<?php
$brands = array();
$models = array();
$colors = array();
$years = array();
foreach ($arr as $k=>$v) {
switch ($k) {
case 'Brand':
$brands[] = $v;
break;
case 'Model':
$models[] = $v;
break;
case 'Color':
$colors[] = $v;
break;
case 'Years':
$years[] = $v;
break;
}
}
?>
<script type="text/javascript">
//<!--
$(document).ready(function() {
var brands = new Array(<?php echo count($brands); ?>);
var models = new Array(<?php echo count($models); ?>);
var colors = new Array(<?php echo count($colors); ?>);
var years = new Array(<?php echo count($years); ?>);
<?php
$i = 0;
foreach ($brands as $v) {
echo 'brands[' . $i. '] = ' . $v . ';'
++$i;
}
$i = 0;
foreach ($models as $v) {
echo 'models[' . $i. '] = ' . $v . ';'
++$i;
}
$i = 0;
foreach ($colors as $v) {
echo 'colors[' . $i. '] = ' . $v . ';'
++$i;
}$i = 0;
foreach ($years as $v) {
echo 'brands[' . $i. '] = ' . $v . ';'
++$i;
}
?>
// now you should have items from your PHP array in JS arrays so you can do something with them
$('a.populate-brands').click(function() {
for (v in brands) {
//
}
})
}); //-->
</script>