我正在开关汽车和他们各自的模型。数据是从php数据库中提取的。可能会使这样更有活力? (较短的代码)。对不起,我的英语不好。如何使用JavaScript和php缩短这个过程
选择
<select id="main_list">
<option value="default" selected>Marca</option>
<?php
/* marcas */
$Alfa_Romeo=39;
$Chevrolet=33;
$Chrysler=40;
$Citroën=42;
$Dodge=41;
$Fiat=35;
/* ... */
$Registros=array();
$Registros=TraerMarcas();
if (!empty($Registros)) {
$cntRegistros=count($Registros);
}
?>
<?php for ($i=0; $i < $cntRegistros ; $i++) { ?>
<option value="<?php echo $Registros[$i]['marca'] ?>"><?php echo $Registros[$i]['marca'] ?></option>
<?php } ?>
</select>
<select id="brand" disabled > <option value="default" selected>Modelo</option></select>
<select id="version" disabled ><option value="default" selected>Cilindrada</option></select>
JS
$(document).ready(function() {
$(function() {
var sel, i,
list = [ <?php for ($i=0; $i < $cntRegistros ; $i++) { echo "'".$Registros[$i]['marca']."',"; } ?> ],
Fiat = [ <?php
$Modelo=array();
$marca=$Fiat;
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
Chevrolet = [ <?php
$Modelo=array();
$marca=$Chevrolet;
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
Ford = [ <?php
$Modelo=array();
$marca=$Ford;
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
Cilindrada = [ '1.2','1.3','1.6','2.0','2.5', ],
dev_default = '<option value="default" selected>Modelo</option>',
os_default = '<option value="default" selected>Cilindrada</option>';
sel_marca = $('#brand');
sel_cilin = $('#version');
$('select').change(function() {
switch (this.id) {
case 'main_list':
$('.secondary').hide();
sel_marca.find('option').remove();
sel_marca.append(dev_default);
sel_marca.show();
$('#brand').removeAttr('disabled');
if (this.value == 'Fiat') {
for (i = 0; i < Fiat.length; i++) {
$("#brand").append(
'<option value="' + Fiat[i] + '">' + Fiat[i] + '</option>'
);
}
} else if (this.value == 'Chevrolet') {
for (i = 0; i < Chevrolet.length; i++) {
$("#brand").append(
'<option value="' + Chevrolet[i] + '">' + Chevrolet[i] + '</option>'
);
}
} else if (this.value == 'Ford') {
for (i = 0; i < Ford.length; i++) {
$("#brand").append(
'<option value="' + Ford[i] + '">' + Ford[i] + '</option>'
);
}
}
break;
case 'brand':
sel_cilin.find('option').remove();
sel_cilin.append(os_default);
sel_cilin.show();
$('#version').removeAttr('disabled');
for (i = 0; i < Cilindrada.length; i++) {
$("#version").append(
'<option value="' + Cilindrada[i] + '">' + Cilindrada[i] + '</option>'
);
};
break;
}
});
});
})
请注意,我要重复此过程18个汽车品牌。 我想象在第一选择器中创建根据此品牌选择的变量。喜欢的东西:
var sel, i,
list = [ <?php for ($i=0; $i < $cntRegistros ; $i++) { echo "'".$Registros[$i]['marca']."',"; } ?> ],
CarBrand /* this variable changes according to the variable list */ = [ <?php
$Modelo=array();
$marca=$CarBrand; /* Here the dynamic variable is repeated, calling the database auto brand and bringing selected models that mark */
$Modelo=TraerModelo($marca);
if (!empty($Modelo)) {
$cntModelo=count($Modelo);
}
for ($i=0; $i < $cntModelo ; $i++) { echo "'".$Modelo[$i]['modelo']."',"; }
?> ],
这里就是我靠创建这个jsFiddle。
我希望我的想法不是太疯狂,希望他们能理解我的问题。谢谢阅读。
@Dave,你对此有何看法?该foreach不明白它是如何工作的哈哈 – nicogaldo 2014-10-17 19:53:46