• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Lista select zmiana koloru wiersza

Object Storage Arubacloud
0 głosów
319 wizyt
pytanie zadane 31 października 2020 w JavaScript przez maciej1234 Nowicjusz (120 p.)

Witam, mam tabelę TR/TD z 3 kolumnami. W jednej z nich w wierszu jest lista rozwijana SELECT.

Próbuję zrobić żeby po wybraniu z SELECT np. kolor = Czerwony zapisała mi się ta wartość do bazy ale i od razu podświetliła wiersz tabeli na wybrany kolor bez odświeżania i wyczytywania tej wartości z bazy.
 

<code>
<tr style="background-color: '.$row["column3"].'">
<td>Column1</td>
<td>Column2</td>
<td>
<form>
<select id="column3" style="width:auto;">
        <option>-Wybierz status</option>
        <option value="red">Red</option>
        <option value="green">Green</option>
        <option value="yellow">Yellow</option>
    </select>
</form>
</td>
</code>
<script>
    function edit_data(id, text, column_name)  //Problem1 nie zmienia mi koloru wybranego wiersza w czasie rzeczywistym
    {  
        $.ajax({  
            url:"edit.php",  //Problem2 nie przekazuje mi value do tej funkcji. Edit.php tam mam update sql pola
            method:"POST",  
            data:{id:id, text:text, column_name:column_name},  
            dataType:"text",  
            success:function(data){  
                $('#result').html("<div class='alert alert-success'>"+data+"</div>");
            }  
        });  
    }  
</script>

</code>

 

komentarz 31 października 2020 przez ScriptyChris Mędrzec (190,190 p.)

Czy wołasz gdzieś funkcję edit_data (w powyższym kodzie tego nie widać)? Powinna być wołana na change event selecta. Czy w konsoli przeglądarki są jakieś błędy? Czy ten ajax jest w ogóle wysyłany - jeśli tak, to czy PHP go odbiera?

komentarz 1 listopada 2020 przez Wiciorny Ekspert (269,710 p.)

//Problem1 nie zmienia mi koloru wybranego wiersza w czasie rzeczywistym

bo ajax jest asynchroniczny?  

komentarz 1 listopada 2020 przez VBService Ekspert (252,740 p.)

@maciej1234, Ten kawałek kodu javascript co pokazałeś

    function edit_data(id, text, column_name)  //Problem1 nie zmienia mi koloru wybranego wiersza w czasie rzeczywistym
    {  
        $.ajax({  
            url:"edit.php",  //Problem2 nie przekazuje mi value do tej funkcji. Edit.php tam mam update sql pola
            method:"POST",  
            data:{id:id, text:text, column_name:column_name},  
            dataType:"text",  
            success:function(data){  
                $('#result').html("<div class='alert alert-success'>"+data+"</div>");
            }  
        });  
    } 

w żaden sposób nie odwołuje się do elementu wiersza tabeli, więc nie może wpłynąć na jego kolor (nawet w czasie rzeczywistym).

Nie zaszkodzi dodać obsługi błędów do Twojego ajax-a.

    function edit_data(id, text, column_name)  //Problem1 nie zmienia mi koloru wybranego wiersza w czasie rzeczywistym
    {  
        $.ajax({  
            url:"edit.php",  //Problem2 nie przekazuje mi value do tej funkcji. Edit.php tam mam update sql pola
            method:"POST",  
            data:{id:id, text:text, column_name:column_name},  
            dataType:"text",  
            success: function(data) {  
                $('#result').html("<div class='alert alert-success'>"+data+"</div>");
            },
            error: function(xhr) {
                console.log("Wystąpił błąd: " + xhr.status + " " + xhr.statusText);
            } 
        });  
    } 

 

1 odpowiedź

0 głosów
odpowiedź 1 listopada 2020 przez pablop76 VIP (123,120 p.)
edycja 1 listopada 2020 przez pablop76

Podszedł bym inaczej do tematu. Zmiana koloru tabeli powinna być niezależna od wysyłania danych, więc ustawił bym kolor tabeli na wybrany select i dopiero wysłał dane do bazy i ustawił status wysyłania na zakończone powodzeniem lub nie.

<table>
    <thead>
        <tr>
            <th colspan="2">Kolorowanie kolumn</th>
        </tr>
    </thead>
    <tbody>
        <tr class="choiceBgColor">
            <td>kolumna 1</td>
            <td>kolumna 2</td>
        </tr>
        <tr>
          <td>
          <form>
          <select id="column3">
                  <option>-Wybierz status</option>
                  <option value="red">Red</option>
                  <option value="green">Green</option>
                  <option value="yellow">Yellow</option>
              </select>
          </form>
          </td>
        </tr>
    </tbody>
</table>
<div>Wybrałeś kolor: <span class="result"></span></div>
<div class="sendInfo"></div>
const sendData = (info) => {
  const data = { id: "id", text: "text", column_name: "column_name" };

  fetch("edit.php", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(data),
  })
    .then((response) => response.json())
    .then((data) => {
      console.log("Success:", data);
      info.textContent = "Dane zostały poprawnie wysłane";
    })
    .catch((error) => {
      console.error("Error:", error);
      info.textContent = "Dane nie zostały poprawnie wysłane";
    });
};

const selectElement = document.querySelector("select");
const tr = document.querySelector(".choiceBgColor");
selectElement.addEventListener("change", (event) => {
  const result = document.querySelector(".result");
  const sendInfo = document.querySelector(".sendInfo");
  tr.style.backgroundColor = event.target.value;
  result.textContent = event.target.value;
  result.style.color = event.target.value;
  sendData(sendInfo);
});

Brakuje zabezpieczenia przed wybraniem pierwszej opcji '-Wybierz status' w select

Podobne pytania

0 głosów
1 odpowiedź 610 wizyt
pytanie zadane 31 stycznia 2018 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
1 odpowiedź 86 wizyt
pytanie zadane 13 marca 2020 w JavaScript przez quoka Nowicjusz (230 p.)
0 głosów
2 odpowiedzi 177 wizyt
pytanie zadane 13 sierpnia 2023 w C i C++ przez Janchess Początkujący (480 p.)

92,555 zapytań

141,402 odpowiedzi

319,537 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...