Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Aktualizowanie kilku <select>'ów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
donpablo
Witam.
Problem jest taki że mam ok 6 <select>'ów. Do każdego będzie dodane w pętli php ok 10 nazwisk oraz jako <option value> identyfikator osoby o tym nazwisku. Chodzi teraz o to by wybranie danego nazwiska w pierwszym <select>-cie wymusiło zaktualizowanie kolejnych pięciu tak by tam pokazywało się już nie 10 nazwisk - tylko 9 (bez tego które wybrano w pierwszym). Następnie wybór nazwiska w selekcie 2 sprawiło iż w kolejnych czterech będzie już 8 nazwisk itp. W php nie da się tego zrobić bez wysyłania formularza do serwera, więc kombinowanie tego typu byłoby uciązliwe i czasochłonne. Opcją jest zatem JS. Jak to zrobić? Pytanie raczej skierowane do osób znajacych JS znacznie lepiej niż podstawowo
celbarowicz
Kolego wykombinowałem to co potrzebujesz, robota nie jest wykonana do końca. Na podstawie tego co przesyłam wykombinujesz bez trudu pozostałą część.
Interesuje mnie tylko PO KIEGO DIABŁA ,aż 6 selektów zawierających te same dane wyjściowe.
  1. <script language="javascript" type="text/javascript">
  2. function zmiana(a){var a;var i;var b;var n; var zt;var i2;var ix;
  3.  
  4. n=document.getElementById('s1').length;
  5. ix=0;
  6. for(i=1;i<n;i++){
  7.  
  8. if(a==document.getElementById('s1').options[i].value){}else{ix=ix+1;
  9.  
  10.  
  11. document.getElementById('s2').options[ix].value=document.getElementById('s1').options[i].value;
  12. document.getElementById('s2').options[ix].text=document.getElementById('s1').options[i].text;
  13. }
  14. }
  15.  
  16. document.getElementById('s2').length=n-1;;
  17.  
  18.  
  19.  
  20.  
  21. }
  22.  
  23.  
  24. <select name="s1" id="s1" onChange="zmiana(this.value);" >
  25. <option value="--wybierz--">--wybierz--</option>
  26. <option value="Kowalski">Kowalski</option>
  27. <option value="Powalski">Powalski</option>
  28. <option value="Cowalski">Cowalski</option>
  29. <option value="Dowalski">Dowalski</option>
  30. <option value="Łowalski">Łowalski</option>
  31. <option value="Mowalski">Mowalski</option>
  32. <option value="Nowalski">Nowalski</option>
  33. <option value="Oowalski">Oowalski</option>
  34. <option value="Rowalski">Rowalski</option>
  35. <option value="Towalski">Towalski</option>
  36. <select name="s2" id="s2">
  37. <option value="--wybierz--">--wybierz--</option>
  38. <?php for($i=1;$i<11;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } ?>
  39.  
  40.  
  41.  
  42. </form>
  43. </div>
  44.  
  45.  
  46. <br>
  47. </body>
  48. </html>
  49.  
  50.  
  51.  


w miejsca value-zamiast nazwisko-w pierwszym selekcie wprowadź idosoby,
Pozdrawiam i czekam na odzew.
donpablo
Witam. Dlaczego 6 selectów z tymi samymi danymi? Otóż robię grafik służb dla pewnej instytucji. Po pierwsze muszę sprawdzić na podst grafiku w bazie danych ilu jest w danym dniu obecnych. Tych wszystkich obecnych musze brać potem pod uwagę przy ustalaniu służb. Rodzajów służb jest kilka. Zatem przy każdej służbie musze podać wszystkich obecnych, a ktoś kto wybiera - może wybrać tylko jedno nazwisko do danej słuzby. Oczywiste jest że przy następnym rodzaju służby muszą być brani pod uwagę wszyscy obecni oprócz tej osoby która została wybrana do służby wczesniej. W końcu jedna osoba nie może pełnić dwóch służb. A zatem, wybieram nazwisko z selecta 1 do pełnienia służby X. Potem przy wyborze słuzby w select'cie Y nie mogę mieć opcji wyboru nazwiska które już wybrałem do pełnienia służby X itp. Mam nadzieje że opisałem to jasno. Ogólnie to jestem c++'owcem, a konkretnie to visualc++.Net'owcem. Nie znam JS a z pewnych przyczyn ode mnie niezaleznych nie mogę tego zrobić w VC++Net tylko za pomocą darmowych narzedzi typu JS, php i mysql.
Dzięki za odzew i kawałek kodu. Spróbuje to rozgryźć i dostosować do swojej potrzeby
Regards
celbarowicz
[/html]

teraz kod ulepszony
  1. <html>
  2. <head>
  3. <script language="javascript" type="text/javascript">
  4. function zmiana(a,k){var a;var i;var b;var n; var i2;var ix; var z;var k;
  5. z='s'+k;
  6.  
  7. n=document.getElementById(z).length;
  8.  
  9. ix=0;
  10. for(i=1;i<n;i++){b='s'+eval(k+1);
  11.  
  12. if(a==document.getElementById(z).options[i].value){}else{ix=ix+1;
  13. document.getElementById(b).options[ix].value=document.getElementById(z).options[i].value;
  14. document.getElementById(b).options[ix].text=document.getElementById(z).options[i].text; }
  15. }
  16. document.getElementById(b).length=n-1;;
  17. }
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. </script>
  26. <head>
  27. <body>
  28. <form>
  29. <select name="s1" id="s1" onChange="zmiana(this.value,1);" >
  30. <option value="--wybierz--">--wybierz--</option>
  31. <option value="Kowalski">Kowalski</option>
  32. <option value="Powalski">Powalski</option>
  33. <option value="Cowalski">Cowalski</option>
  34. <option value="Dowalski">Dowalski</option>
  35. <option value="Łowalski">Łowalski</option>
  36. <option value="Mowalski">Mowalski</option>
  37. <option value="Nowalski">Nowalski</option>
  38. <option value="Oowalski">Oowalski</option>
  39. <option value="Rowalski">Rowalski</option>
  40. <option value="Towalski">Towalski</option>
  41. </select>
  42. <select name="s2" id="s2" onChange="zmiana(this.value,2);" >
  43. <option value="--wybierz--">--wybierz--</option>
  44. <?php for($i=1;$i<11;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } ?>
  45.  
  46. </select>
  47.  
  48.  
  49. <select name="s3" id="s3" onChange="zmiana(this.value,3);">
  50. <option value="--wybierz--">--wybierz--</option>
  51. <?php for($i=1;$i<10;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } ?>
  52. </select>
  53.  
  54. <select name="s4" id="s4" onChange="zmiana(this.value,4);">
  55. <option value="--wybierz--">--wybierz--</option>
  56.  
  57. <?php for($i=1;$i<10;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } ?>
  58. </select>
  59. <select name="s5" id="s5" onChange="zmiana(this.value,5);">
  60. <option value="--wybierz--">--wybierz--</option>
  61. <?php for($i=1;$i<10;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } ?>
  62. </select>
  63.  
  64. <select name="s6" id="s6">
  65. <option value="--wybierz--">--wybierz--</option>
  66. <?php for($i=1;$i<10;$i++) { echo '<option value='.$i.'>'.$i.'</option>'; } ?>
  67. </select>
  68.  
  69.  
  70.  
  71.  
  72. </form>
  73. </div>
  74.  
  75.  
  76. <br>
  77. </body>
  78. </html>
  79.  
  80.  

Wszystkie selekty używając odpowiedniej pętli można zapisać jako "jeden"-będzie mniej kodu.
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.