Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML][PHP]jak zdefiniowac zmienna dla select
Forum PHP.pl > Forum > Przedszkole
tom66
witam,

mam taki problem, dla pola :
<form name="classic">
<select name="ee" multiple="multiple">
</select>
</form>
przypisuję zmienną w js
var countrieslist=document.classic.ee

a jak będzie wygladało przypisanie owej zmiennej dla
<select name="ee[]" multiple="multiple">
musi byc ee[] gdyż potem wykorzystuję to w PHP smile.gif
z góry dziękuję za odp wink.gif

marekge
Rozpisz swój problem bo coś mi się wydaje że idziesz w złą stronę ...
tom66
Cytat(marekge @ 17.05.2011, 17:46:43 ) *
Rozpisz swój problem bo coś mi się wydaje że idziesz w złą stronę ...


więc rozpisuję smile.gif
znalazłem oto taki przykład:
  1. <form name="classic">
  2. <select name="countries" size="4" onChange="updatecities(this.selectedIndex)" style="width: 150px">
  3. <option selected>Select A City</option>
  4. <option value="usa">USA</option>
  5. <option value="canada">Canada</option>
  6. <option value="uk">United Kingdom</option>
  7.  
  8. <select name="cities" size="4" style="width: 150px" onClick="alert(this.options[this.options.selectedIndex].value)">
  9. </form>
  10.  
  11. <script type="text/javascript">
  12.  
  13. var countrieslist=document.classic.countries
  14. var citieslist=document.classic.cities
  15.  
  16. var cities=new Array()
  17. cities[0]=""
  18. cities[1]=["New York|newyorkvalue", "Los Angeles|loangelesvalue", "Chicago|chicagovalue", "Houston|houstonvalue", "Austin|austinvalue"]
  19. cities[2]=["Vancouver|vancouvervalue", "Tonronto|torontovalue", "Montreal|montrealvalue", "Calgary|calgaryvalue"]
  20. cities[3]=["London|londonvalue", "Glasgow|glasgowsvalue", "Manchester|manchestervalue", "Edinburgh|edinburghvalue", "Birmingham|birminghamvalue"]
  21.  
  22. function updatecities(selectedcitygroup){
  23. citieslist.options.length=0
  24. if (selectedcitygroup>0){
  25. for (i=0; i<cities[selectedcitygroup].length; i++)
  26. citieslist.options[citieslist.options.length]=new Option(cities[selectedcitygroup][i].split("|")[0], cities[selectedcitygroup][i].split("|")[1])
  27. }
  28. }
  29.  


chcę aby drugi select był multiple oraz zeby jego wartości przesłac POST-em przez PHP-a, a żeby PHP odczytywał wiele wartości to chyba nazwa selecta musi zawierac "[]" jak poniżej....
  1. <select name="cities[]" multiple >


wiec jak zmienic nazwe zmiennej w JS aby odczytała mi nazwe drugiego selecta .....


czy ktoś pomoże sad.gif
plej
Nie wiem czy dobrze cię zrozumiałem ale jak chcesz odebrać dane postem to piszesz:
np.
  1. <form action="plik.php" method="post">
  2. // tu dalszy kod
  3. // i zmykasz
  4. </form>


a odbierasz się postem:
np.
  1. $wartosc = $_POST['nazwa']


$_POST['nazwa'] gdzie ['nazwa'] wpisujesz wartość pola name=""

tom66
Cytat(plej @ 19.05.2011, 04:56:01 ) *
Nie wiem czy dobrze cię zrozumiałem ale jak chcesz odebrać dane postem to piszesz:
np.
  1. <form action="plik.php" method="post">
  2. // tu dalszy kod
  3. // i zmykasz
  4. </form>


a odbierasz się postem:
np.
  1. $wartosc = $_POST['nazwa']


$_POST['nazwa'] gdzie ['nazwa'] wpisujesz wartość pola name=""



chodzi mi o zmienną w JS, w PHPie wiem jak wyslac i odebrac ale chodzi o to ze gdy nazwa select jest "cities[]"( taką którą można odycztac wysyłając ją później POSTem) to nie wiem jak przerobic skrypt JS aby obsługiwał mi nazwę select zawierającą "[]"
mortus
Trochę inaczej trzeba to wyciągnąć:
  1. <form name="classic">
  2. <select name="ee[]" multiple="multiple">
  3. <option value="0" selected>wartość domyślna</option>
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. <option value="3">3</option>
  7. <!-- ... -->
  8. </select>
  9. </form>
  10. <script type="text/javascript">
  11. <!--
  12. var form = document.forms["classic"];
  13. // lub var form = document.classic;
  14. var ee = form["ee[]"];
  15. // jednak wydobywanie zaznaczonych opcji wymaga użycia pętli
  16. var selected = new Array();
  17. var index = 0;
  18. for(var i=0; i < ee.options.length; i++) {
  19. if(ee.options[i].selected) {
  20. selected[index] = ee.options[i].value;
  21. index++;
  22. }
  23. }
  24. // w ten oto sposób w tablicy selected mamy wartości zaznaczonych opcji
  25. -->
tom66
Cytat(mortus @ 19.05.2011, 09:14:25 ) *
Trochę inaczej trzeba to wyciągnąć:
  1. <form name="classic">
  2. <select name="ee[]" multiple="multiple">
  3. <option value="0" selected>wartość domyślna</option>
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. <option value="3">3</option>
  7. <!-- ... -->
  8. </select>
  9. </form>
  10. <script type="text/javascript">
  11. <!--
  12. var form = document.forms["classic"];
  13. // lub var form = document.classic;
  14. var ee = form["ee[]"];
  15. // jednak wydobywanie zaznaczonych opcji wymaga użycia pętli
  16. var selected = new Array();
  17. var index = 0;
  18. for(var i=0; i < ee.options.length; i++) {
  19. if(ee.options[i].selected) {
  20. selected[index] = ee.options[i].value;
  21. index++;
  22. }
  23. }
  24. // w ten oto sposób w tablicy selected mamy wartości zaznaczonych opcji
  25. -->


ehhh probuję i probuję, nie umiem z tego skorzystac na własny uzytek sad.gif
może tak ....
jak przerobic owy skrypt JS aby można bylo znaznaczyc kilka opcji w selectie drugim( gdzie trzeba dodac mulitple oraz do nazwy dodac "[]") i wysłac je wszyktie POSTem (PHP)
z góry dziękuje za pomoc
  1. <form name="classic" method="post" action=rr.php >
  2. <select name="countries" size="4" onChange="updatecities(this.selectedIndex)" style="width: 150px">
  3. <option selected>Select A City</option>
  4. <option value="usa">USA</option>
  5. <option value="canada">Canada</option>
  6. <option value="uk">United Kingdom</option>
  7.  
  8. <select name="cities" size="4" style="width: 150px" >
  9. <input type="submit" name="submit" value="wyślij" />
  10. </form>
  11.  
  12. <script type="text/javascript">
  13.  
  14. var countrieslist=document.classic.countries
  15. var citieslist=document.classic.cities
  16.  
  17. var cities=new Array()
  18. cities[0]=""
  19. cities[1]=["New York|newyorkvalue", "Los Angeles|loangelesvalue", "Chicago|chicagovalue", "Houston|houstonvalue", "Austin|austinvalue"]
  20. cities[2]=["Vancouver|vancouvervalue", "Tonronto|torontovalue", "Montreal|montrealvalue", "Calgary|calgaryvalue"]
  21. cities[3]=["London|londonvalue", "Glasgow|glasgowsvalue", "Manchester|manchestervalue", "Edinburgh|edinburghvalue", "Birmingham|birminghamvalue"]
  22.  
  23. function updatecities(selectedcitygroup){
  24. citieslist.options.length=0
  25. if (selectedcitygroup>0){
  26. for (i=0; i<cities[selectedcitygroup].length; i++)
  27. citieslist.options[citieslist.options.length]=new Option(cities[selectedcitygroup][i].split("|")[0], cities[selectedcitygroup][i].split("|")[1])
  28. }
  29. }
  30.  






mortus
Modyfikujemy formularz (linia 9 w powyższym kodzie):
  1. <select name="cities[]" size="4" style="width: 150px">
Później modyfikujemy skrypt JS (linie 15-17 włącznie w powyższym kodzie):
[JAVASCRIPT] pobierz, plaintext
  1. var form = document.form["classic"];
  2. var countrieslist = form["countries"];
  3. var citieslist = form["cities[]"];
[JAVASCRIPT] pobierz, plaintext
I to powinno wystarczyć.
Powodzenia
tom66
Cytat(mortus @ 24.05.2011, 14:25:24 ) *
Modyfikujemy formularz (linia 9 w powyższym kodzie):
  1. <select name="cities[]" size="4" style="width: 150px">
Później modyfikujemy skrypt JS (linie 15-17 włącznie w powyższym kodzie):
[JAVASCRIPT] pobierz, plaintext
  1. var form = document.form["classic"];
  2. var countrieslist = form["countries"];
  3. var citieslist = form["cities[]"];
[JAVASCRIPT] pobierz, plaintext
I to powinno wystarczyć.
Powodzenia



takie modyfikacje dają komunikat :
citieslist.options jest pusty lub nie jest obiektem

w sumie nie będe sie upierał przy JS jak znacie jakis krótki szybki kodzik do implementacji
aby powiązac ze soba te dwa selecty, w którym drugi jest multiple:
Znalazłem to(jquery): http://blog.tobiasz.org/2010/08/09/jquery-...ne-pola-select/
ale nie wiem dlaczego u mnie nie pojawiają sie dane z drugim selectie wogole...
a gdy w wyświetle zawartosc strony ajax_models.php i "na sztywno" zmiennej $mid przypisze wartosc wyświetla wartości...


tom66
Cytat(mortus @ 24.05.2011, 14:25:24 ) *
Modyfikujemy formularz (linia 9 w powyższym kodzie):
  1. <select name="cities[]" size="4" style="width: 150px">
Później modyfikujemy skrypt JS (linie 15-17 włącznie w powyższym kodzie):
[JAVASCRIPT] pobierz, plaintext
  1. var form = document.form["classic"];
  2. var countrieslist = form["countries"];
  3. var citieslist = form["cities[]"];
[JAVASCRIPT] pobierz, plaintext
I to powinno wystarczyć.
Powodzenia



takie modyfikacje dają komunikat :
citieslist.options jest pusty lub nie jest obiektem

w sumie nie będe sie upierał przy JS jak znacie jakis krótki szybki kodzik do implementacji
aby powiązac ze soba te dwa selecty, w którym drugi jest multiple:
Znalazłem to(jquery): http://blog.tobiasz.org/2010/08/09/jquery-...ne-pola-select/
ale nie wiem dlaczego u mnie nie pojawiają sie dane z drugim selectie wogole...
a gdy w wyświetle zawartosc strony ajax_models.php i "na sztywno" zmiennej $mid przypisze wartosc wyświetla wartości...


mortus
W SELECT zapomniałem o atrybucie multiple="multiple", ale nie ma to znaczenia. Pobieram kod z trzeciego postu, wprowadzam opisane przeze mnie zmiany i wszystko działa jak trzeba w FF, IE i Google Chrome.

EDIT
Ewentualnie możesz przerobić funkcję updatecities
[JAVASCRIPT] pobierz, plaintext
  1. function updatecities(selectedcitygroup) {
  2. if (selectedcitygroup>0) {
  3. for (i=0; i<cities[selectedcitygroup].length; i++)
  4. citieslist.options[i]=new Option(cities[selectedcitygroup][i].split("|")[0], cities[selectedcitygroup][i].split("|")[1]);
  5. }
  6. }
[JAVASCRIPT] pobierz, plaintext
tom66
Cytat(mortus @ 24.05.2011, 15:21:17 ) *
W SELECT zapomniałem o atrybucie multiple="multiple", ale nie ma to znaczenia. Pobieram kod z trzeciego postu, wprowadzam opisane przeze mnie zmiany i wszystko działa jak trzeba w FF, IE i Google Chrome.


po tych modifikacjach otrzymujemy:
  1. <form name="classic" method="post" action=rr.php >
  2. <select name="countries" size="4" onChange="updatecities(this.selectedIndex)" style="width: 150px">
  3. <option selected>Select A City</option>
  4. <option value="usa">USA</option>
  5. <option value="canada">Canada</option>
  6. <option value="uk">United Kingdom</option>
  7.  
  8. <select name="cities[]" size="4" style="width: 150px" multiple="multiple">
  9. <input type="submit" name="submit" value="wyślij" />
  10. </form>
  11.  
  12. <script type="text/javascript">
  13. var form = document.form["classic"];
  14. var countrieslist = form["countries"];
  15. var citieslist = form["cities[]"];
  16.  
  17. var cities=new Array()
  18. cities[0]=""
  19. cities[1]=["New York|newyorkvalue", "Los Angeles|loangelesvalue", "Chicago|chicagovalue", "Houston|houstonvalue", "Austin|austinvalue"]
  20. cities[2]=["Vancouver|vancouvervalue", "Tonronto|torontovalue", "Montreal|montrealvalue", "Calgary|calgaryvalue"]
  21. cities[3]=["London|londonvalue", "Glasgow|glasgowsvalue", "Manchester|manchestervalue", "Edinburgh|edinburghvalue", "Birmingham|birminghamvalue"]
  22.  
  23. function updatecities(selectedcitygroup){
  24. citieslist.options.length=0
  25. if (selectedcitygroup>0){
  26. for (i=0; i<cities[selectedcitygroup].length; i++)
  27. citieslist.options[citieslist.options.length]=new Option(cities[selectedcitygroup][i].split("|")[0], cities[selectedcitygroup][i].split("|")[1])
  28. }
  29. }
  30.  


i mam ten błąd w IE a w FF brak akcji po kliknięciu .... ;( coś nie tak robię?
mortus
Ech, widzę teraz błąd. U siebie wpisałem dobrze, a tutaj źle. Linia 15:
[JAVASCRIPT] pobierz, plaintext
  1. var form = document.forms["classic"];
[JAVASCRIPT] pobierz, plaintext

EDIT
Mogłem skopiować i wkleić, ale jakoś wolę pisać z pamięci. Niestety nie zawsze na tym wychodzę smile.gif
tom66
Cytat(mortus @ 24.05.2011, 15:34:10 ) *
Ech, widzę teraz błąd. U siebie wpisałem dobrze, a tutaj źle. Linia 15:
[JAVASCRIPT] pobierz, plaintext
  1. var form = document.forms["classic"];
[JAVASCRIPT] pobierz, plaintext

EDIT
Mogłem skopiować i wkleić, ale jakoś wolę pisać z pamięci. Niestety nie zawsze na tym wychodzę smile.gif



miszczu jesteś wielki exclamation.gif!
dziękuję za poświęcony czas smile.gif


Cytat(mortus @ 19.05.2011, 09:14:25 ) *
Trochę inaczej trzeba to wyciągnąć:
  1. <form name="classic">
  2. <select name="ee[]" multiple="multiple">
  3. <option value="0" selected>wartość domyślna</option>
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. <option value="3">3</option>
  7. <!-- ... -->
  8. </select>
  9. </form>
  10. <script type="text/javascript">
  11. <!--
  12. var form = document.forms["classic"];
  13. // lub var form = document.classic;
  14. var ee = form["ee[]"];
  15. // jednak wydobywanie zaznaczonych opcji wymaga użycia pętli
  16. var selected = new Array();
  17. var index = 0;
  18. for(var i=0; i < ee.options.length; i++) {
  19. if(ee.options[i].selected) {
  20. selected[index] = ee.options[i].value;
  21. index++;
  22. }
  23. }
  24. // w ten oto sposób w tablicy selected mamy wartości zaznaczonych opcji
  25. -->


a mam jeszcze pytanie co do tego skryptu,
zapisuje od wartosci to tablicy selected
a jak zrobic aby wszystie wartosci zmienic na jeden ciąg znaków, tak jak w php funkcja implode


znalazlem smile.gif
.join(',')
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.