Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Jeden select zależny od drugiego
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam wszystkich.

W JS to ja nawet nie raczkuje ;d a potrzebuje jeden skrypt.
Znalazłem taki, lecz niestety nie działa.

Mógłbym prosić o pomoc?

Z góry dziękuje

zamowienie.js

Kod
function getLevel(elem) {
    
    // wybrana opcja
    var eid = elem.options[elem.selectedIndex].value;
    // jeśli jest 0 to oznacza to że wybrano wybierz kategorię
    if (eid == 0) return false;
    
    // następny element
    var obj = $($(elem).nextSiblings()[0]);
    // blokowanie całego formularza
    Form.disable($(elem).parentNode);
    
    // czyszczenie listy do której zostaną dodane pobrane dane
    for (i = obj.options.length-1; i >= 0; i--) {
        obj.remove(i);
    }
    
    // komunikat o ładowaniu
    obj.options[0] = new Option("Ładowanie...", 1);
        
    /* komunikacja AJAX'em
    * adres pliku pobieramy z atrybutu action formularza
    */
    new Ajax.Request($(elem).parentNode.action, {
        method: 'get',
        parameters: { id: eid },
        onSuccess: function(transport) {
            for (i = obj.options.length-1; i >= 0; i--) {
            obj.remove(i);
            }
        
            // wszytkie tagi o nazwie option
            record = transport.responseXML.getElementsByTagName("option");
            result = "";
            obj.options[0] = new Option("-- wybierz kategorię --", 0);
            for (i = 0; i < record.length; i++) {
            
                // najpier podajemy wartość, następnie id danego rekordu
                obj.options[i+1] = new Option(record[i].childNodes[0].nodeValue, record[i].getAttribute("id"));
            }
            // odblokowanie formularza
            Form.enable($(elem).parentNode);
            return result;
        }
    });

}

function getItem(id) { /*Coś tu można wrzucić */ }


zamówienie.html

  1. <form name="multicombo" action="ddl.php">
  2. <select size="1" name="a" id="a" onChange="getLevel(this)">
  3. <option value="0" selected>? wybierz kategorię ?</option>
  4. <option value="1">Malarstwo</option>
  5. <option value="2">Pisarstwo</option>
  6. <option value="3">Dziennikarstwo</option>
  7. <option value="4">Ogrodnictwo</option>
  8. <select name="b" id="b" onChange="getLevel(this)" disabled>
  9. <option selected>? puste ?</option>
  10. <select name="c" id="c" onChange="getItem(this)" disabled>
  11. <option selected>? puste ?</option>


Po wybraniu pierwszej kategorii nie rozwija się następna. Może ma ktoś nawet lepszy kod?

Próbuje to cały czas ogarnąć ale mi nie idzie. Myślę, że dobrym sposobem byłoby jQuery, tylko zupełnie nie wiem jak zabrać się za to... Mógłbym prosić o pomoc? Przeszukałem google, ale nie znalazłem nic ciekawego.
kamil4u
Było setki razy... jak nie tu na na pewno na innych forach..., ale mniejsza: http://www.infimum.dk/HTML/multiselect.html
adrianozo
Jakoś tak dziwnie napisane... nie mogę nic z tego zrozumieć sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.