ugrás a tartalomhoz

selectek tartalmának újragenerálása javascriptből

csozo · 2011. Okt. 23. (V), 22.44
Sziasztok!

A problémám a következő:

Javascripttel generálom egy oldalon lévő selectek tartalmát. Egy change() esemény hatására meghívódik a függvény, ami ezt elvégzi. A tartalom az elvárt módon változik meg, viszont ezt követően már csak az imént módosított selected tudom változtatni, semelyik másik select esemány változásakor nem következik be a change() esemény.
Valószínűleg nem is azzal van a gond, hanem magával a függvényemmel, valahol közben szállhat el a script, de nem tudom hogy tudnám kideríteni, hogy pontosan hol.

A select change eseményem:
$('select').change(function ()
        { 
            //egyéb kód...
            refill_selects(where);
            //egyéb kód...
        });
a refill_selectsben beállítom a megfelelő feltételeket és meghívom a függvényt, ami ténylegesen feltölti a selecteket:
function refill_selects(where)
    { 
        if (var i=0; i < search_types.length; i++)
        {
            //egyéb kód...
            create_and_fill_selects(i, search_types, indexes);
            //egyéb kód...
        }
        else
        {
            for (var i=0; i < search_types.length; i++)
            {
                create_and_fill_selects(i, search_types[i], false);
            }
        }
az else ágban lévő rész hívódik meg az oldal betöltődésekor ( [i]$(document).ready() ) is szóval az a rész tuti jól működik, mert első alkalommal még mindenből tudok választani, és a .change() bekövetkezik, szóval az if ággal lesz a gond, vagyis, hogy pontosabban fogalmazzak, az onnan meghívott create_and_fill_selects függvényemmel, aminek a gyanúsított része így fest:
        if (indexes != false)
        {
            for (var i=0; i < garage.length; i++)
            {
                for (var j=0; j < indexes.length; j++)
                {
                    if (i == indexes[j])
                    {
                        options[j] = new Array(search_values[garage[i][id]], garage[i][id]);
                    }
                }
            }
        }
Leginkább arra lennék kíváncsi, hogy másnak volt-e hasonló tapasztalata és ha igen, akkor hogy sikerült megoldani, vagy milyen praktikákat tudna rá.
A kódrészletek amiket kihagytam lényegében mind tömbműveletek, innen-onnan szedek ki értékeket, vizsgálok meg stb. lényegében egy szűrő a dolog az option-ök beállítására. De azt nem értem, ha tényleg minden értéket helyesen megkapok, akkor mégis hol halhat be a dolog...
Ha esetleg bárki tudna valamilyen támpontot adni, esetleg komoly segítséget megköszönném.
 
1

Hogyan?

Poetro · 2011. Okt. 24. (H), 01.22
Hogyan töltöd fel a select dobozok elemeit? Mert ha az egész select elemet lecseréled, akkor újra hozzá kell adni az eseménykezelőket. Egyébként pedig figyeld a böngésződ hiba konzolját.
2

cserélem az egész selectet

csozo · 2011. Okt. 24. (H), 08.48
Igen, lényegében minden select esetén az egész selectet cserélem.
$('#' + type).html('<select name="' + type + '" class="' + div_class + '" id="garage_select_' + id + '"><option value="whatever">Mindegy</option>' + sorted_options + '</select>');
A sorted_options tartalma pedig a következő:
sorted_options = sorted_options + '<option value="' + unique_options[i][1] + '">' + unique_options[i][0] + '</option>';
Ez összesen 17 selectet érint.
Hogy tudnám az eseménykezelőt újra hozzárendelni a selectekhez?
3

Ha csak a <select>-hez

Hidvégi Gábor · 2011. Okt. 24. (H), 09.19
Ha csak a <select>-hez tartozó options tömböt cseréled le, akkor nem kell újra hozzárendelni az eseménykezelőt.