15. januar 2001 - 09:57Der er
16 kommentarer og 2 løsninger
Dynamisk Basket funktionalitet
Hejsa,
Jeg sidder og bakser lidt med en udfordring, jeg ikke helt kan få hul på. Det jeg vil lave er en slags dynamisk udvælgelses funktion, så det bliver nemmere for brugeren at vælge forskellige elementer.
Det der var meningen, var at jeg dynamisk genererer de to select bokse(Hvordan har jeg heller ikke helt grejet endnu..), men mit store problem er, at få fikset den dynamik der skal til, for at kunne flytte indhold fra en selection boks til en anden.
Velagt er lidt sovs, for bedre at kunne vise hvor jeg vil hen, så hvis der er nogle der har nogle hints eller referencer til en løsning er det i orden. Findes der derimod en konkret løsning (Nogen må jo have lavet det her før!), er det bare fedt.
.. og så glemte jeg jo lige, at forskellen her, næsten er den samme - bortset fra at begge bokse i mit tilfælde er dynamisk genererede. Det kan være at man tidligere havde valgt noget..
<!-- function copy(f) { var i=f.s1.selectedIndex; if (i>=0) { f.s2.options[f.s2.options.length]=new Option(f.s1[i].text,f.s1[i].value); } } function copy2(f) { var i=f.s2.selectedIndex; if (i>=0) { f.s1.options[f.s1.options.length]=new Option(f.s2[i].text,f.s2[i].value); } } function del1(f) { var i=f.s2.selectedIndex; if (i>=0) { var len=f.s2.options.length; for (j=i;j<len-1;j++) { f.s2.options[j].value=f.s2.options[j+1].value; f.s2.options[j].text=f.s2.options[j+1].text; } f.s2.options.length--; } f.s1.selectedIndex=-1; f.s2.selectedIndex=-1; } function del2(f) { var i=f.s1.selectedIndex; if (i>=0) { var len=f.s1.options.length; for (j=i;j<len-1;j++) { f.s1.options[j].value=f.s1.options[j+1].value; f.s1.options[j].text=f.s1.options[j+1].text; } f.s1.options.length--; } f.s1.selectedIndex=-1; f.s2.selectedIndex=-1; } function moveall(f){ var len = f.s1.options.length; for (j = 0;j<len;j++) { f.s2.options[f.s2.options.length]=new Option(f.s1[j].text,f.s1[j].value); } for (j=0;j<len;j++) { f.s1.options.length--; }
} function moveall2(f){ var len = f.s2.options.length; for (j = 0;j<len;j++) { f.s1.options[f.s1.options.length]=new Option(f.s2[j].text,f.s2[j].value); } for (j=0;j<len;j++) { f.s2.options.length--; }
Opdater knappen, skulle såmænd blot submitte hele skidtet tilbage til DB\'en. Der er jo ikke megen fidus i at designe et system til opdatering, hvis man ikke kan gemme ændringerne. (Og ligefrem gemme ændringnerne hver gang man flytter et item, er nok lige lidt overkill..)
Så den må du selv kunne lave, altså opdater funktionen...... Eller skal du også have hjælp til den ??? i så fald skal du nok lige give os lidt tabelnavne og db design forklaring...Er de ASP ?
Okay, glemte jeg at sige at jeg bruger det her i MS miljø :)???
Det er lige præcis den funktionalitet du beskriver som ikke virker i det eksempel du gav. Det er ikke fordi der mangler at sættes multiple på selctionen, men nok snarre fordi at copy funktionerne ikke kan håndtere flere selections...
Jeg ved det ikke nærmere, men kigger videre når jeg er kommet fra frokost..
Hmmmm. det bliver en grov en.... taget fra MS\' hjemmeside : ***************** The selectedIndex property is most useful when used with SELECT objects that support selecting only one item at a time—that is, those in which the MULTIPLE attribute is not specified. If the MULTIPLE attribute is specified for a SELECT object, the selectedIndex property returns only the index of the first selected item, if any. *****************
Den kan jeg ikke klare...... Jeg må overlade resten af din basket til nogen der har tjeck på DOM, eller måske noget OLE object tingest............JUUUUUMPER > hvor er du !????
SÅ ER DEN DER...... *********************************** <html> <head> <title>28243</title> <script language=\"JavaScript\">
<!-- function copy3(f) {
i = f.s1.options.length; j = 0; while (j < i) {
if (f.s1.options[j].selected == true) { f.s2.options[f.s2.options.length]=new Option(f.s1[j].text,f.s1[j].value); } j++; } j = 0; var len=f.s1.options.length; while (j < i) { if (f.s1.options[j].selected == true) { f.s1.options[j].value = \"THISONEISEMPTY\"; f.s1.options[j].text = \"\"; } j++; } j=0; while (j < len) { if (f.s1.options[j].value == \"THISONEISEMPTY\" & f.s1.options[j].text == \"\") { //alert(\"this one is empty : \" + j); for (g=j;g<len-1;g++) { //alert(g); f.s1.options[g].value=f.s1.options[g+1].value; f.s1.options[g].text=f.s1.options[g+1].text; } f.s1.options.length--; len=f.s1.options.length; j = 0; } else { j++; }
} f.s1.selectedIndex=-1; f.s2.selectedIndex=-1; }
function copy4(f) {
i = f.s2.options.length; j = 0; while (j < i) {
if (f.s2.options[j].selected == true) { f.s1.options[f.s1.options.length]=new Option(f.s2[j].text,f.s2[j].value); } j++; } j = 0; var len=f.s2.options.length; while (j < i) { if (f.s2.options[j].selected == true) { f.s2.options[j].value = \"THISONEISEMPTY\"; f.s2.options[j].text = \"\"; } j++; } j=0; while (j < len) { if (f.s2.options[j].value == \"THISONEISEMPTY\" & f.s2.options[j].text == \"\") { //alert(\"this one is empty : \" + j); for (g=j;g<len-1;g++) { //alert(g); f.s2.options[g].value=f.s2.options[g+1].value; f.s2.options[g].text=f.s2.options[g+1].text; } f.s2.options.length--; len=f.s2.options.length; j = 0; } else { j++; }
} f.s1.selectedIndex=-1; f.s2.selectedIndex=-1; }
function moveall(f){ var len = f.s1.options.length; for (j = 0;j<len;j++) { f.s2.options[f.s2.options.length]=new Option(f.s1[j].text,f.s1[j].value); } for (j=0;j<len;j++) { f.s1.options.length--; }
} function moveall2(f){ var len = f.s2.options.length; for (j = 0;j<len;j++) { f.s1.options[f.s1.options.length]=new Option(f.s2[j].text,f.s2[j].value); } for (j=0;j<len;j++) { f.s2.options.length--; }
Det er jo så smukt så jeg er helt rørt, men jeg er lidt overbevist om at olobole\'s svar hjalp lidt med på vej, så jeg har fordelt points\'ne på min egen retfærdige måde.
Anyway, tak for hjælpen i denne omgang.
Eftermægle.... Hvor fedt er det så, at vise noget smukt kode frem, og sige se hvor smart, når den løsning der så blev valgt var een select multiple med flere values selected... ak
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.