Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Przeciąganie i upuszczanie
Mefiuu
post 25.06.2013, 12:04:26
Post #1





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


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.

Ten post edytował Mefiuu 25.06.2013, 12:07:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
ber32
post 25.06.2013, 13:04:24
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


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');


--------------------
Go to the top of the page
+Quote Post
Mefiuu
post 25.06.2013, 14:55:43
Post #3





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


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.
Go to the top of the page
+Quote Post
--miki--
post 25.06.2013, 20:01:48
Post #4





Goście







Zobacz jak twoje wybitnie działa

Przynajmniej nie obrażaj innych
Go to the top of the page
+Quote Post
Mefiuu
post 25.06.2013, 21:49:50
Post #5





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


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

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 04:44