katGam = { '35' : [13], '37' : [13,14], '40' : [13], '45' : [13], '46' : [13], '47' : [13], '48' : [13], '49' : [13], '50' : [13], '51' : [13], '52' : [13], '53' : [13], '54' : [13], '55' : [13], '56' : [13], '57' : [13], '104' : [13], '105' : [13], '106' : [13], '114' : [28], '115' : [28], '116' : [28], '121' : [13] }; katSub = { '46' : [24,25], '35' : [39,40,41,42], '52' : [22,23], '50' : [35,37,36], '45' : [15,16], '47' : [17,18], '54' : [43,44,45,46], '37' : [11,12,13,14], '83' : [48], '99' : [53,54], '100' : [56,57], '103' : [59], '108' : [62,63,65] }; $(document).ready(function(){ function array_search( needle, haystack, strict ) { var strict = !!strict; for(var key in haystack){ if( (strict && haystack[key] === needle) || (!strict && haystack[key] == needle) ){ return key; } } return false; } var gam = document.searchForm.gamintojas; // gamintojų select'as var gop = gam.options; // gamintojų option'ai var gamId = new Array(); // gamintojų ID var gamPav = new Array(); // gamintojų pavadinimai var subk = document.searchForm.subkategorija; // subkategorijų select'as var sop = subk.options; // subkategorijų option'ai var subkId = new Array(); // subkategorijų ID var subkPav = new Array(); // subkategorijų pavadinimai // susirenkam originalus į masyvus for (var i = 0; i < gop.length; i++) { gamId[i] = gop[i].value; gamPav[i] = gop[i].text; } for (var i = 0; i < sop.length; i++) { subkId[i] = sop[i].value; subkPav[i] = sop[i].text; } $('#kategorija').change(function(){ var katid = this.value; gop.length = 0; // naikinam visus option'us select'e sop.length = 0; // naikinam visus option'us select'e if (katid == 0) { // kai pasirinkta „visos kategorijos“ // atvaizduosim visus gamintojus: for (var i in gamId) { gop[gop.length] = new Option(gamPav[i], gamId[i]); } // ir pirmąją subkategoriją (t.y. „visi tipai“): sop[0] = new Option(subkPav[0], subkId[0]); } else { // kai pasirinkta konkreti kategorija gop[gop.length] = new Option(gamPav[0], gamId[0]); // pirmas elementas („visi gamintojai“) for (var key in katGam[katid]) { gamid = katGam[katid][key]; gop[gop.length] = new Option(gamPav[array_search(gamid, gamId)], gamid); } sop[sop.length] = new Option(subkPav[0], subkId[0]); // pirmas elementas („visi tipai) for (var key in katSub[katid]) { subid = katSub[katid][key]; sop[sop.length] = new Option(subkPav[array_search(subid, subkId)], subid); } } }); $('#kategorija').change(); });