Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 14 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 23.10.2009 17:00

Mam jednoduchy javascript na presun poloziek z jedneho selectu do druheho.

Nazorna ukazka je tu: http://inbazar.sk/test/js/index.php

funguje to v pohode, ale ked presuniem co i len jednu polozku, stratia sa farby /styly/ v polozkach vlavo.

vsimnite si ze teraz su tam tri rozne farby a po presunuti doprava farby zo vsetkych zmiznu.

Nie som tak dobry v javascripte, neviem co opravit, aby tam tie styly zostali.

Tu je samotny kod javascriptu:



Kód:
<script language="JavaScript" type="text/JavaScript">     function move(fbox, tbox) {     var arrFbox = new Array();     var arrTbox = new Array();     var arrLookup = new Array();     var i;     for (i = 0; i < tbox.options.length; i++) {     arrLookup[tbox.options[i].text] = tbox.options[i].value;     arrTbox[i] = tbox.options[i].text;     }     var fLength = 0;     var tLength = arrTbox.length;     for(i = 0; i < fbox.options.length; i++) {     arrLookup[fbox.options[i].text] = fbox.options[i].value;     if (fbox.options[i].selected && fbox.options[i].value != "") {     arrTbox[tLength] = fbox.options[i].text;     tLength++;     }     else {     arrFbox[fLength] = fbox.options[i].text;     fLength++;     }     }     arrFbox.sort();     arrTbox.sort();     fbox.length = 0;     tbox.length = 0;     var c;     for(c = 0; c < arrFbox.length; c++) {     var no = new Option();     no.value = arrLookup[arrFbox[c]];     no.text = arrFbox[c];     fbox[c] = no;     }     for(c = 0; c < arrTbox.length; c++) {     var no = new Option();     no.value = arrLookup[arrTbox[c]];     no.text = arrTbox[c];     tbox[c] = no;     }     }     function selectAll(box) {     for(var i=0; i<box.length; i++) {     box[i].selected = true;     }     }     //  End -->     </script>


a este HTML cast


Kód:
<form name="form1" method="post" enctype="multipart/form-data">   
                 
       <select name="FirstList" id="FirstList" style="width:250px;height:100px" multiple>
      <option value="1" style="color: blue">Kategoria 1</option>
        <option value="2" style="color: green">Kategoria 2</option>
        <option value="3" style="color: red">Kategoria 3</option>
        </select>
      </td>

      <td align="left" width="60"><input type="button" onclick="move(this.form.FirstList,this.form.SecondList)" value=">>" style="height:50"/><br /><input type="button" onclick="move(this.form.SecondList,this.form.FirstList)" value="<<" style="height:50" /></td>

      <td align="left">Post in categories<br /><select name="test[]" id="SecondList" style="width:250px;height:100px" multiple="multiple" >
   </select></td></tr>

      </tr></table></div>
       
        </form>
prosim o radu..dakujem


Offline

Správca fóra
Správca fóra
presun zo selectu do selectu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 23.10.2009 17:11

problem je v tom, ze pri presuvani si uchovavas/nastavujes len text a hodnotu value jednotlivych poloziek, ale na atribut style uz zabudas...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok Napísal autor témyOffline : 23.10.2009 17:23

hm, no ano, ale da sa to nejak zmenit aby to fungovalo aj so stylmi?

Napr. skusil som vsade doplnit fbox.options[i].text.style ale tak to nejde


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.04.09
Prihlásený: 11.02.10
Príspevky: 723
Témy: 81
Príspevok NapísalOffline : 23.10.2009 17:31

skusil si?
fbox.options[i].style.color


Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok Napísal autor témyOffline : 23.10.2009 17:41

skusil som teraz aj to. ale nefunguje to.. Neviem presne kde mam dat to .style.color

pretoze v tom javascripte sa vyskytuje aj tbox.options[i].value, aj tbox.options[i].text


Offline

Čestný člen
Čestný člen
presun zo selectu do selectu

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 23.10.2009 18:42

Pouzil by som standardne metody DOMu - skopirujes option pomocou cloneNode, umiestnis ho pomocou appendChild / insertBefore a zmazes povodny option pomocou removeChild. Takto spolahlivo presunies vsetky atributy daneho uzlu.


Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok Napísal autor témyOffline : 23.10.2009 19:13

Duri, ja viem ze si odbornik, ale na mna je to moc .. ja sa v tejto oblasti moc nevyznam

:roll: :oops:

zostal by som pri tom mojom sposobe, lebo to pekne funguje, len kde dat tie styly aby zostali zachovane...pls


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.01.08
Prihlásený: 24.09.20
Príspevky: 27
Témy: 7
Príspevok NapísalOffline : 23.10.2009 21:16

Tak teda pouzijeme tvoj sposob :)

Na zaciatok si pridame dve nove premenne

var addColor = new Array(), keepColor = new Array();

"addColor" nam posluzi na to aby sme vedeli, ktoru farbu presuvame dalej a "keepColor" nam udrzi farby, ktore nam ostali v prvom boxe.

Kód:
function move(fbox, tbox) {   
      var arrFbox = new Array();     
      var arrTbox = new Array();     
      var arrLookup = new Array();
      var addColor = new Array(), keepColor = new Array();     
      var i;   
      
     for (i = 0; i < tbox.options.length; i++) {     
         arrLookup[tbox.options[i].text] = tbox.options[i].value;
         arrTbox[i] = tbox.options[i].text;
         // tuto farbu presuvame
         addColor[i] = tbox.options[i].style.color;
      }   
      
      var fLength = 0;     
      var tLength = arrTbox.length;
         
      for(i = 0; i < fbox.options.length; i++) { 
         arrLookup[fbox.options[i].text] = fbox.options[i].value;
         // zapiseme si vsetky farby a ich poradie
         keepColor[i] = fbox.options[i].style.color;   
         if (fbox.options[i].selected && fbox.options[i].value != "") {     
             arrTbox[tLength] = fbox.options[i].text;
            // tuto farbu presuvame
            addColor[tLength] = fbox.options[i].style.color;
            // a zaroven ju dame prec lebo nam ostali zvysne dve
            keepColor.splice(keepColor.indexOf(i), 1);
            tLength++;     
         } else {     
            arrFbox[fLength] = fbox.options[i].text;
            fLength++;     
         }     
      }
           
      arrFbox.sort();     
      arrTbox.sort();
      // sort
      keepColor.sort();
      addColor.sort();
           
      fbox.length = 0;   
      tbox.length = 0;   
      
      var c;     
      for(c = 0; c < arrFbox.length; c++) {   
         var no = new Option();     
         no.value = arrLookup[arrFbox[c]];     
         no.text = arrFbox[c];
         // tieto farby na ostali
         no.style.color = keepColor[c];
         fbox[c] = no;     
      }   
      for(c = 0; c < arrTbox.length; c++) {   
         var no = new Option();     
         no.value = arrLookup[arrTbox[c]];     
         no.text = arrTbox[c];
         // tuto farbu sme presunuli
         no.style.color = addColor[c];     
         tbox[c] = no;     
      }     
   }     


Takze u mna to fici jedna radost, tak by to mali ist aj tebe. :roll:


Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok Napísal autor témyOffline : 24.10.2009 3:17

excelentne!!!

diky moc :)


Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok Napísal autor témyOffline : 30.10.2009 16:31

musim sa k tejto teme vratit... tie farby su v pohode, funguje to super.

Zistil som vsak jeden nedostatok, a to, ze nespravne priraduje value presunutym polozkam vtedy, ak maju rovnake mena.

Uvediem priklad:

Kód:
<select name="FirstList" id="FirstList"  multiple>
      <option value="x" style="color: blue">Kategoria 1</option>
        <option value="1" >automobily</option>
        <option value="2">motocykle</option>
<option value="x" style="color: blue">Kategoria 2</option>
        <option value="3" >automobily</option>
        <option value="4">bicykle</option>

        </select>


Ked teda zvolim v lavom selecte napr. automobily /value 1/, presunie sa doprava sice nazov automobily, ale ma value 3 - to znaci to druhe value.

Dalo by sa niekde v tom kode upravit, aby aj v pripade rovnakych nazvov presunul aj spravne value?

dakujem

Prikladam cely kod vo verzii, ktoru pouzivam:

Kód:
function move(fbox, tbox) {   
      var arrFbox = new Array();     
      var arrTbox = new Array();     
      var arrLookup = new Array();
      var addColor = new Array(), keepColor = new Array();     
      var i;   
     
     for (i = 0; i < tbox.options.length; i++) {     
         arrLookup[tbox.options[i].text] = tbox.options[i].value;
         arrTbox[i] = tbox.options[i].text;
         // tuto farbu presuvame
       //  addColor[i] = tbox.options[i].style.color;
      }   
     
      var fLength = 0;     
      var tLength = arrTbox.length;
         
      for(i = 0; i < fbox.options.length; i++) {
         arrLookup[fbox.options[i].text] = fbox.options[i].value;
         // zapiseme si vsetky farby a ich poradie
         keepColor[i] = fbox.options[i].style.color;   
         
         if (fbox.options[i].selected && fbox.options[i].value == "x") {alert('Musíte zvoliť konkrétnu podkategóriu');return }
           
         if (fbox.options[i].selected && fbox.options[i].value != "") {     
             arrTbox[tLength] = fbox.options[i].text;
            // tuto farbu presuvame
            addColor[tLength] = fbox.options[i].style.color;
            // a zaroven ju dame prec lebo nam ostali zvysne dve
            keepColor[fLength] = fbox.options[i].style.color;
           
            if (arrTbox.length>3) {alert('Môžete pridať maximálne 3 kategórie!'); return}   
            tLength++;     
         } else {     
            arrFbox[fLength] = fbox.options[i].text;
            keepColor[fLength] = fbox.options[i].style.color;   
            fLength++;     
         }     
      }
           
    //  arrFbox.sort();     
    //  arrTbox.sort();
   
    //  keepColor.sort();
    //  addColor.sort();
           
      fbox.length = 0;   
      tbox.length = 0;   
     
      var c;     
      for(c = 0; c < arrFbox.length; c++) {   
         var no = new Option();     
         no.value = arrLookup[arrFbox[c]];   
         no.text = arrFbox[c];
         // tieto farby na ostali
         no.style.color = keepColor[c];
         fbox[c] = no;     
      }   
      for(c = 0; c < arrTbox.length; c++) {   
         var no = new Option();     
         no.value = arrLookup[arrTbox[c]];     
         no.text = arrTbox[c];
         // tuto farbu sme presunuli
         no.style.color = addColor[c];     
         tbox[c] = no;     
      }     
   }     
     function selectAll(box) {     for(var i=0; i<box.length; i++) {     box[i].selected = true;     }     }


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 05.12.08
Prihlásený: 24.06.14
Príspevky: 59
Témy: 17
Príspevok NapísalOffline : 30.10.2009 17:51

nepozeral som si cely kod, ale myslim ze nie je vhodne aby si mal v jednom selecte dve options s rovnakym menom navyse s rozdielnymi hodnotami.

Naozaj si to nechces rozmysliet a pouzit standardne funkcie na pracu so selectom? Nie je to az tak tazke

Ja pouzivam na prenos so selectu do selectu tuto funkciu

select_two.options.add(select_one.options[0]);

tymto jednym riadkom sa mi odstrani options z prveho selectu a zaroven prida do druheho. Index 0 znamena ze sa prenesie prva option v poradi. A prenesie mi to aj styl.

//edit: prave zistujem ze moje riesenie s funkciou add nefunguje v IE. takze nic:)


Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok Napísal autor témyOffline : 31.10.2009 11:28

hm, problem je, ze kategorie si v admine urcuje zakaznik, a ja ich vytahujem z dtb do prveho selectu. V niektorych kategoriach su podkategorie, ktore su rovnake s inymi podkategoriami v inych kategoriach. Proste zakaznik to tak chce.

Napr. je kategoria VYVOJ SOFTWARU - podkategorie
Aplikacie, databazy, ostatne

a potom kategoria ADMINISTRACIA SYSTEMOV - bezpecnost, databazy, ostatne

atd...

proste chcem aby to fungovalo aj s rovnakymi nazvami... vsetko pekne funguje, jediny problem je ked su rovnake nazvy, nepriradi spravne value.

Prosim vas o pomoc, nejak ten kod poupravit,dost mi to suri.

Mockrat diky!


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 05.12.08
Prihlásený: 24.06.14
Príspevky: 59
Témy: 17
Príspevok NapísalOffline : 31.10.2009 12:07

skus tie option identifikovat podla id. napriklad

<option id="vyvoj_softwaru_ostatne">Ostatne</option>
<option id="administracia_systemov_ostatne">Ostatne</option>


Offline

Užívateľ
Užívateľ
presun zo selectu do selectu

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok Napísal autor témyOffline : 31.10.2009 12:31

to neni zly napad, priradit ku kazdemu optionu ID s nazvom hlavnej kategorie. Avsak ako to potom spracujem po presunuti do druheho selectu?

Aby teda priradilo spravne value---

//EDIT: tak zatial som to vyriesil tak, ze do selectu vypisujem nazvy podkategorii spolu s hlavnou kategoriou. Teda napr.

Vyvoj softwaru->databazy
Vyvoj softwaru->ostatne
Administracia->ostatne

Tym padom nazvy nie su rovnake a takto to funguje spravne.

Ale ak by ste to vedeli vyriesit inak, uvitam kazdu radu. diky


Odpovedať na tému [ Príspevkov: 14 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. nacitanie selectu cez zmenu druhehp selectu

v JavaScript, VBScript, Ajax

11

665

21.01.2011 13:45

DeeJay3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Štýlovanie selectu

v HTML, XHTML, XML, CSS

3

378

08.07.2012 10:43

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. prerobenie selectu

v Databázy

3

572

16.05.2010 18:39

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. sirka selectu

v HTML, XHTML, XML, CSS

2

440

20.11.2009 19:45

neopagan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. interaktivna zmena selectu

v PHP, ASP

8

592

19.05.2010 20:46

jablko05 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vytvorit novy select podla prveho selectu

v JavaScript, VBScript, Ajax

2

374

23.07.2010 15:19

DeeJay3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vyberam data do selectu a nejde odkaz

v PHP, ASP

0

296

06.01.2010 14:06

Vcelar Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Presun diskov

v Pevné disky a radiče

5

1190

25.12.2018 13:36

Nonsenszm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. presun fora

v Redakčné systémy

4

864

16.12.2009 10:39

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Presun Windowsu

v SSD disky

13

936

12.12.2013 15:04

KocuR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Presun prvkov pola

v Assembler, C, C++, Pascal, Java

2

371

18.10.2012 1:51

Gregi555 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zlá diakritika presun hostingu

v Redakčné systémy

2

657

18.11.2008 22:30

Owen Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Presun e-mailov z gmailu

v Služby a webstránky

9

702

26.03.2020 13:06

matmatmat Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Presun poli na obrazovke uzivatela

v Assembler, C, C++, Pascal, Java

0

347

01.12.2016 21:45

mona777 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Presun dát na iný hosting

v Redakčné systémy

5

524

01.10.2012 21:53

killer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. presun fora na iny hosting

v Redakčné systémy

4

623

09.01.2007 14:17

Leachim Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra