Помогите? уже неделю не могу решить проблему
Нужно сделать несколько взаимосвязанных списков, каждый из которых зависит от предыдущего. Значения берутся из БД.
Начало работает правильно. Соединяюсь с БД и заполняю первый селект
Эти списки заполняем при помощи вызова вот такой пхп страницы
И ничего не выходит, только первый селект заполнен,а остальные пустые и не активируются.
Что не так? Где править и на что?
Нужно сделать несколько взаимосвязанных списков, каждый из которых зависит от предыдущего. Значения берутся из БД.
Начало работает правильно. Соединяюсь с БД и заполняю первый селект
Код:
<script type="text/javascript">
(function($){
// очищаем select
$.fn.clearSelect = function() {
return this.each(function(){
if(this.tagName=='SELECT') {
this.options.length = 0;
$(this).attr('disabled','disabled');
}
});
}
// заполняем select
$.fn.fillSelect = function(dataArray) {
return this.clearSelect().each(function(){
if(this.tagName=='SELECT') {
var currentSelect = this;
$.each(dataArray,function(index,data){
var option = new Option(data.text,data.value);
if($.support.cssFloat) {
currentSelect.add(option,null);
} else {
currentSelect.add(option);
}
});
}
});
}
})(jQuery);
</script>
<script type="text/javascript">
$(document).ready(function(){
// выбор категории
function adjustAuto(){
var firmaValue = $('#firma').val();
var tmpSelect = $('#auto');
if(firmaValue.length == 0) {
tmpSelect.attr('disabled','disabled');
tmpSelect.clearSelect();
adjustModel();
} else {
$.getJSON('cascadeSelectAuto.php',{firma:firmaValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); adjustModel(); });
}
};
// выбор модели
function adjustModel(){
var firmaValue = $('#firma').val();
var autoValue = $('#auto').val();
var tmpSelect = $('#model');
if(firmaValue.length == 0||autoValue.length == 0) {
tmpSelect.attr('disabled','disabled');
tmpSelect.clearSelect();
} else {
$.getJSON('cascadeSelectModel.php',{firma:firmaValue,auto:autoValue},function(data) { tmpSelect.fillSelect(data).attr('disabled',''); });
}
};
$('#firma').change(function(){
adjustAuto();
}).change();
$('#auto').change(adjustModel);
$('#model').change(function(){
if($(this).val().length != 0) { alert('Оборудование выбрано!'); }
});
});
</script>
<body>
<?php
$link = mysql_connect("localhost", "root")
or die("Не могу подключиться");
print ("Соединение выполнено");
$link = mysql_connect("localhost", "root")
or die("Не могу подключиться" );
// сделать test текущей базой данных
mysql_select_db('spiski', $link) or die ('Не могу выбрать БД');
$result = mysql_query ("select * from firma_oborud", $link);
mysql_free_result($result);
?>
<table cellpadding="10">
<tr>
<td >
<p >
<label>Оборудование</label><br />
<!-- Первый (главный) список -->
<select id="List1">
<option value="0">Выбирите производителя</option>
<?php
$result = mysql_query ("select * from firma_oborud", $link);
while ($row = mysql_fetch_assoc($result))
{
echo '<option value="'.$row['firma1_id'].'">'.$row['name'].'</option>';
}
?>
</select>
<!-- Подчиненный список 1 (изначально пуст) -->
<select id="List2" disabled="disabled"></select>
<!-- Подчиненный список 2 (изначально пуст) -->
<select id="List3" disabled="disabled"></select>
Код:
<?php
header('Content-Type: text/html; charset=utf-8');
$a=$_GET['firma']; $n=0;
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
$res = mysql_query ("select * from tip_oborud where type1_id = $a", $link);
while ($row = mysql_fetch_assoc($res))
$nam = $row['name'];
print '[{value:"$n",text:"$nam"}]';
$n=$n+1;
}}
?>
Что не так? Где править и на что?