Index
<html> <head> <script type="text/javascript" src="/select.js"></script> </head> <body> <form action="select.php" id="formularz" action="post"> <fieldset> <legend>Kategorie</legend> <select id="kategorie"> <option value="1">Kategoria 1</option> <option value="2">Kategoria 2</option> <option value="3">Kategoria 3</option> <option value="4">Kategoria 4</option> </select> </fieldset> </form> </body> </html>
select.php
<? $id = $_GET['id']; switch($id) { case 1: '11'=>'Kategoria 1.1', '12'=>'Kategoria 1.2', '13'=>'Kategoria 1.3' ); break; case 2: '21'=>'Kategoria 2.1', '22'=>'Kategoria 2.2', '23'=>'Kategoria 2.3', '24'=>'Kategoria 2.4' ); break; case 3: '31'=>'Kategoria 3.1', '32'=>'Kategoria 3.2' ); break; case 4: '41'=>'Kategoria 4.1', '42'=>'Kategoria 4.2', '43'=>'Kategoria 4.3' ); break; default: break; } } ?>
select.js
//select.js //skrypt będzie uruchamiany gdy strona się całkowicie załaduje $(document).ready(function() { //przypisanie akcji wywołania dodatkowej listy do zdarzenia typu change $('#kategorie').live('change', function(){ var id = $(this).val(); //adres url do pliku PHP z kodem generującym dane w formacie JSON var url = 'select.php?id='+id; //jeśli istnieje już select-lista o id: podkategorie, to usuń ją if($('#podkategorie').length>0) $('#podkategorie').remove(); //metoda pobierająca dane JSON z podanego adresu w zmiennej url $.getJSON( url, function(data){ //tworzymy nową, pustą listę select o id: podkategorie i ją dołączamy do formularza select = '<select id="podkategorie"></select>'; $('#formularz fieldset').append(select); var lista = $('#podkategorie'); //ukrywamy listę. Potrzebne to będzie do uzyskania animacji pojawienia się elementu na stronie lista.hide(); //generowanie kolejnych opcji listy var option = $('<option/>'); .html(val) .appendTo(lista); }); //animacja pojawienia się elementu na stronie lista.show('scale', 500); }, 'json' ); }) })