Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Przeciąganie i upuszczanie
Forum PHP.pl > Forum > Przedszkole
Mefiuu
Witam. Mam pewien problem. Piszę sobie aplikację, w której wykorzystuję jQuery UI Draggable, Droppable. Cały zarys ma się tak:

z lewej strony mam tabelkę z imionami i nazwiskami ludzi, np.

  1. <table class='people1'>
  2. <tr>
  3. <td>No.</td>
  4. <td>Pozycja</td>
  5. <td colspan='2'>Dane</td>
  6. </tr>
  7. </thead>
  8. <tr class='aa1'>
  9. <td class='number' id='322' info='Cyryl<br />Wysocki<br />S'>1</td>
  10. <td class='position'>szef</td><td class='name'>Cyryl Wysocki</td>
  11. </tr>
  12. <tr class='aa2'>
  13. <td class='number' id='318' info='Karol<br />Kaczmarczyk<br />R'>2</td>
  14. <td class='position'>pracownik</td><td class='name'>Karol Kaczmarczyk</td>
  15. </tr>


obok tego mam małą planszę, w której po pobraniu danych z bazy umieszczam ludzi. Wygląda to tak:

  1. <table class="people2">
  2. <tr>
  3. <td class="bb1"><div><span class="people-drag" name="Cyryl Wysocki">Cyryl<br />Wysocki<br />szef</span></div></td>
  4. <td class="bb2"><div><span class="people-drag" name="Karol Kaczmarczyk">Karol<br />Kaczmarczyk<br />pracownik</span></div></td>
  5. </tr>


(ludzi jest więcej, dałem dwóch tylko pokazowo)

Przenoszenie między zawodnikami oraz z listy po lewej na miejsce po prawej fajnie mi działa, jednak chcę sobie zrobić coś takiego, że jeśli zamienię PO PRAWEJ STRONIE, na planszy Cyryla na miejsce Karola to żeby ta zmiana pokazała mi się na liście. Skrobnąłem taki oto kod:

[JAVASCRIPT] pobierz, plaintext
  1. function change_line_up() {
  2.  
  3. var o_list = new Array(); // stara lista z lewej
  4. var n_list = new Array(); // plansza z prawej, na tej podstawie będzie nowa lista
  5.  
  6. o_list[1] = $('table.people1 tbody tr.aa1 td.name').text(); // pobiera mi "Cyryl Wysocki"
  7. o_list[2] = $('table.people1 tbody tr.aa2 td.name').text(); // pobiera mi "Karol Kaczmarczyk"
  8.  
  9. n_list[1] = $('table.people2 tbody tr td.bb1 div.ui-droppable span.people-drag').attr('name'); // pobiera mi "Karol Kaczmarczyk"
  10. n_list[2] = $('table.people2 tbody tr td.bb2 div.ui-droppable span.people-drag').attr('name'); // pobiera mi "Cyryl Wysocki"
  11.  
  12. for(i=1; i<3; i++) {
  13. if(o_list[i] != n_list[i]) {
  14. if (i == 1) {
  15. $('table.people1 tbody tr.aa1 td.name').html(n_list[i]);
  16. }
  17. else if (i == 2) {
  18. $('table.people1 tbody tr.aa2 td.name').html(n_list[i]);
  19. }
  20. }
  21. }
  22.  
  23. }
[JAVASCRIPT] pobierz, plaintext


no i rodzi się mały problem, bo o ile niektórych ludzi mi przenosi i zmienia pola w liście o tyle innych mi nie aktualizuje na liście (na planszy zamieniają się miejscami). Funkcję wywołuję podczas upuszczania elementu na pole droppable. Pewnie tu leży gdzieś logiczny problem, jednak jeśli sprawdzam sobie tak:

[JAVASCRIPT] pobierz, plaintext
  1. for(i=1; i<3; i++) {
  2. if(o_list[i] != n_list[i]) {
  3. alert("różnica jest na " + o_list[i]);
  4. }
  5. }
[JAVASCRIPT] pobierz, plaintext


to po dowolnej zmianie zawodników wyskakuje mi ten komunikat. Na chwilę obecną mam na planszy i liście 6 ludzi. Jeśli zamienię ludzi z pozycji 1 i pozycji 2 to oni się ładnie zamieniają i aktualizują w tabeli (to samo działa w drugą stronę). Jeśli zamienię 2 z 5 to również działa fajnie. Ale jeśli zamieniam już 3 z 4 to nic się nie dzieje na liście. Jeśli zamienię 1 z 6 to aktualizuje się mi tylko pole na liście pod numerem 1 (czyli mam dwóch takich samych ludzi na liście).

Mam nadzieję że dobrze to zobrazowałem. Myślałem że może ma to związek z polskimi znakami diakrytycznymi, jednak chyba nie, bo ludzie 'z ogonkami' w nazwiskach zmieniają się ładnie, a już bez 'ogonków' zmieniają się tylko na planszy.

W czym może tutaj tkwić problem ? Proszę o porady i pomoc.

@edit. poprawa bbcode.
ber32
Witam. Prawdopodobnie źle deklarujesz
  1. n_list[1] = $('table.people2 tbody tr td.bb1 div.ui-droppable span.people-drag').attr('name'); // pobiera mi "Karol Kaczmarczyk"
  2. n_list[2] = $('table.people2 tbody tr td.bb2 div.ui-droppable span.people-drag').attr('name'); // pobiera mi "Cyryl Wysocki"
  3.  
  4. n_list[1] = $('table.people2 tbody tr td.bb1 div.ui-droppable span.people-drag').attr('class', 'name');
Mefiuu
kompletnie nie rozumiem tego rozwiązania, mógłbyś dokładniej ? Spróbowałem to co podałeś ale to nie działa już wybitnie.
-miki-
Zobacz jak twoje wybitnie działa

Przynajmniej nie obrażaj innych
Mefiuu
miki, kimkolwiek jesteś, a Tobie co się stało ? Dajesz jakiś kod, nie wiadomo o co Ci chodzi i jeszcze mnie oskarżasz o obrażanie innych ... Powiedz mi co było niestosownego w mojej wypowiedzi ? A jeśli nie było nic to dlaczego tak reagujesz ?
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.