Cześć, jestem totalnie zielony i nie wiem czy zabieram sie do tego w odpowiedni sposób.
W formularzu mam dwie <select> listy (FirstStage i SecondStage). W każdej z nich są różne wartości, ale należą one, do dwóch kategorii (A i B, zarówno w jednej i drugiej liście są wartości z kat. A i B)
Chcę, aby po wybraniu jednej z wartości w FirstStage (przykładowo wybieram value-A-1), w SecondStage pokazały się tylko wartości z danej kategorii (w tym przypadku kategoria A -> wartości np. value-A-1-1, value-A-2-1, itd)
Po wybraniu przez użytkownika wartości z SecondStage i kliknięciu 'submit', chcę je wyświetlić na innej stronie i dodać do bazy danych. Wszystko działa jak wyłącze filtrowanie jQuery, natomiast potencjalny odwiedzający wybierajac wartość z grupy A nadal może wybrać wartość z grupy B. A tak być nie może ;p Z kolei jak włączę skrypt, poprawnie mi filtruje w formularzu, ale wartości z filtrowanej listy nie są przesyłane, nie mogę dodać ich do bazy danych i poprzez echo nie mogę ich wywołać. Jak temu zaradzic? Mam wrażenie, ze muszę to ugryźć z zupełnie innej strony, ale po wertowaniu googla, sam nie umiem do tego dojść sad.gif

na JS Bin można zobaczyć działanie skryptu JS.
Zamieszczę jeszcze swój kod:

formularz.php
  1. <form action="verify.php" name="form" id="form" method="post">
  2. <select id="FirstStage" name="FirstStage">
  3. <option value=""></option>
  4. <option value="value-A-1" id="A"> value-A-1</option>
  5. <option value="value-A-2" id="A"> value-A-2</option>
  6. <option value="value-A-3" id="A"> value-A-3</option>
  7. <option value="value-B-1" id="B"> value-B-1</option>
  8. <option value="value-B-2" id="B"> value-B-2</option>
  9. <option value="value-B-3" id="B"> value-B-3</option>
  10. </select>
  11.  
  12. <select id="SecondStage" name="SecondStage">
  13. <option value="0"></option>
  14. <option value="z"></option>
  15. <option value="value-A-aaa" >value-A-aaa</option>
  16. <option value="value-A-bbb" >value-A-bbb</option>
  17. <option value="value-A-ccc" >value-A-ccc</option>
  18. <option value="value-A-ddd" >value-A-ddd</option>
  19. <option value="value-A-eee" >value-A-eee</option>
  20. <option value="value-B-xxx" >value-B-xxx</option>
  21. <option value="value-B-yyy" >value-B-yyy</option>
  22. <option value="value-B-zzz" >value-B-zzz</option>
  23. </select>
  24.  
  25. <input type="submit" name="sendform" id="submit" value="Send a form">


verify.php
  1. <? mysql_query("INSERT INTO form ('FirstStage','SecondStage')"); ?>
  2. <? echo $_POST['FirstStage']?>
  3. <? echo $_POST['SecondStage']?>


JS
  1. jQuery.fn.filterOn = function(selection, values) {
  2. return this.each(function() {
  3. var select = this;
  4. var options = [];
  5. $(select).find('option').each(function() {
  6. options.push({value: $(this).val(), text: $(this).text()});
  7. });
  8. $(select).data('options', options);
  9. $(selection).change(function(){
  10. $(selection + " option:selected").each(function(){
  11. var options = $(select).empty().data('options');
  12. var haystack = values[$(this).attr('id')];
  13. $.each(options, function(i){
  14. var option = options[i];
  15. if($.inArray(option.value, haystack) !== -1) {
  16. $(select).append(
  17. $('<option>').text(option.text).val(option.value)
  18. );
  19. }
  20. });
  21. });
  22. });
  23. });
  24. };
  25.  
  26.  
  27. $(document).ready(function(){
  28. $(function() {
  29. $('#SecondStage').filterOn('#FirstStage', {
  30. 'A': ['value-A-aaa','value-A-bbb','value-ccc','value-A-ddd','value-A-eee','z'],
  31. 'B': ['value-B-xxx','value-B-yyy','value-B-zzz','0']
  32.  
  33. });
  34. return true;
  35. });
  36. });


Edit:

heh, doszedłem juz do tego, że winowajcą jest "var options = $(select).empty().data('options');". Super, tylko teraz jak to zmodyfikować, żeby dalej mi filtrowało ;/