Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML]multiple select i dodawanie do tablicy array w JS
Forum PHP.pl > Forum > Przedszkole
casperii
Proszę o spojrzenie w kod i ewentualne naprowadzenie mnie gdzie robię błąd. Przy każdej próbie zaznaczenia wyboru z listy multiple select pojawia mi się wartość tylko pierwszego elementu z listy.
Poniżej kod:

  1. var myarray = new Array();
  2. function getSelectedDataAttribute(event) {
  3. var selected_value = event.options[event.selectedIndex].value;
  4.  
  5. myarray.push(selected_value);
  6. alert(myarray);
  7. }


oraz
  1. <select onchange="getSelectedDataAttribute(this)">
  2. <option value="1">zima</option>
  3. <option value="2">wiosna</option>
  4. <option value="3">lato</option>
  5. <option value="4">jesień</option>
nospor
Mi dziala. Moze zamiast alert zrob console.log

ps: twoj select nie jest zaden MULTIPLE tongue.gif
casperii
Cytat(nospor @ 9.06.2022, 20:04:20 ) *
Mi dziala. Moze zamiast alert zrob console.log

ps: twoj select nie jest zaden MULTIPLE tongue.gif


hehe smile.gif ok, a jak to teraz odebrać , tzn przesłać dalej ? smile.gif

  1. var myarray = new Array();
  2. function getSelectedDataAttribute(event) {
  3. var selected_value = event.options[event.selectedIndex].value;
  4.  
  5. myarray.push(selected_value);
  6. console.log(myarray);
  7. }
  8.  
  9. document.addEventListener('submit', function(e){
  10. const tablica =myarray
  11.  
  12. const data = {
  13. tablica: tablica
  14. };
  15.  
  16. });

nospor
No przeciez to wlasnie zrobiles. Naprawde lubisz dawac kiepsko opisane problemy. A potem zdenerwowany chodzisz ze sie dopytuje :/

ps: rownie dobrze mozesz od razu dobrac sie do array
const data = {
tablica: myarray
};
casperii
no właśnie NIC nie śle do DB
Console.log z danymi które posyłam dla tego pola pokazuje array(liczba zaznaczonych elementów) - zgodna liczba z tymi ile zaznaczyłem w selecie.
nospor
NO ale chlopie, zrobiles tablice data
const data

I robisz cos z nia pozniej? Przysylasz gdzies? Ajaxem? I znowu wracamy do punktu, gdzie totalnie zle opisujesz sytuacje. No skad ja mam wiedziec jak to wysylasz do bazy, jak to odbierasz itd itd. No ogarnij sie w wkonuc troche

A jesli ty to wysylasz normalnie formem, po klinieciu na submit, to normalka ze nie dziala. Form wysyla tylko pola formularza i nic wiecej. Wiec jak chcesz normalnie formem to wyslac, to tworzysz pole ukryte w tym formie i do tego pola przypisujesz wartosc tej tablicy
casperii
@nospor no i wszystko jasne smile.gif dzięki naprowadziłeś mnie

edit, coś nadal bierze tylko pierwszy element ale dublowany tyle razy ile zostanie wybrana opcja z selecta.

HTML:
  1. <form action="" method="post" id="run">
  2. <select onchange="getSelectedDataAttribute(this)">
  3. <option value="1">zima</option>
  4. <option value="2">wiosna</option>
  5. <option value="3">lato</option>
  6. <option value="4">jesień</option>
  7. <input type="hidden" name="ukrytePole">
  8. <button type="submit">zapisz</button>
  9. </form>



JS:
  1. var myArray = new Array();
  2. function getSelectedDataAttribute(event) {
  3. var selected_value = event.options[event.selectedIndex].value;
  4. myArray.push(selected_value);
  5.  
  6. console.log(myArray);
  7. document.getElementById('ukrytePole').value = myArray
  8. }
  9.  
  10.  
  11. document.addEventListener('submit', function(e){
  12. const form = document.querySelector("#run")
  13. const tablica = form.ukrytePole.value
  14. const data = {
  15. tablica: tablica
  16. };
  17. });


console.log
  1. ['9']
  2. (2) ['9', '9']
  3. (3) ['9', '9', '9']
nospor
Nie ogarniam po co ci ten event na SUBMIT skoro i tak dane do pola ukrytego wkladasz za kazdym clickiem...

ALe pomiajac to co wyzej to co to niby ma byc?
document.getElementById('ukrytePole').value = myArray

Do pola ukrytego wklada sie TEKST. Musisz wiec swoja tablice zamieniac na np. elementy oddzielone przecinkiem

ps: ide spac
casperii
do elementu ID ukrytePole wstawia wartość tablicy myArray , w podglądzie kodu widzę , że dodaje: value="9,9,9"
Problem jest gdzie indziej , zawsze dodaje do tablicy pierwszy element, nie ten który zaznaczam.
nospor
Mi wszystko dziala jak nalezy

https://jsfiddle.net/y90j2qb5/

moze masz jakies eventy czy cos takiego, ktore psuja efekt
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.