Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML]multiple select i dodawanie do tablicy array w JS, wskazuje tylko na pierwszy element z listy
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


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>
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Mi dziala. Moze zamiast alert zrob console.log

ps: twoj select nie jest zaden MULTIPLE (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
casperii
post
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Cytat(nospor @ 9.06.2022, 20:04:20 ) *
Mi dziala. Moze zamiast alert zrob console.log

ps: twoj select nie jest zaden MULTIPLE (IMG:style_emoticons/default/tongue.gif)


hehe (IMG:style_emoticons/default/smile.gif) ok, a jak to teraz odebrać , tzn przesłać dalej ? (IMG:style_emoticons/default/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. });

Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
};
Go to the top of the page
+Quote Post
casperii
post
Post #5





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


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.

Ten post edytował casperii 9.06.2022, 19:37:53
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
casperii
post
Post #7





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor no i wszystko jasne (IMG:style_emoticons/default/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']


Ten post edytował casperii 9.06.2022, 20:12:47
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
casperii
post
Post #9





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Mi wszystko dziala jak nalezy

https://jsfiddle.net/y90j2qb5/

moze masz jakies eventy czy cos takiego, ktore psuja efekt
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 05:08