Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Jeden select zależny od drugiego
adrianozo
post 24.01.2011, 19:35:53
Post #1





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował adrianozo 15.01.2011, 11:42:50


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kamil4u
post 24.01.2011, 19:43:53
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Było setki razy... jak nie tu na na pewno na innych forach..., ale mniejsza: http://www.infimum.dk/HTML/multiselect.html


--------------------
Go to the top of the page
+Quote Post
adrianozo
post 24.01.2011, 21:10:16
Post #3





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

Ostrzeżenie: (0%)
-----


Jakoś tak dziwnie napisane... nie mogę nic z tego zrozumieć sad.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 09:38