Toon posts:

[HTML] Moven van select options.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een control panel voor een scriptje en ik maak nu gebruik van 2 select forms om te selecteren wie er toegang heeft. Ik kan nu al options moven, maar ik wil dat ze ook nog gesorteerd worden op value.

Het script is hier te bekijken (en source dus ook).

Dit werkt nu wel onder Mozilla, maar niet in IE. IE geeft geen duidelijke foutmelding en het lukt me ook niet om het te laten werken in IE. Dit is het eerste probleem.

Het tweede probleem is dat ik de items wil sorteren op value. De options hebben als value het ID van de groep. Dus ID 1 moet bovenaan staan en 2 daaronder enz...

Verwijderd

Ik zou eens gaan kijken naar de DOM methode insertBefore van het Node object. Ik zou niet gaan sorteren, maar alvorens je een node verplaatst, eerst even kijken op welke plek deze komen moet.

  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 15-08 12:40
Waarom tel je eerst de selected items? Da's helemaal niet nodig, enkel je tweede 'for (i=0;.....)' lus is genoeg.

Array's kunnen min of meer automatisch worden gesorteerd, voor veel items is dat het snelste. Met minder items kan je (n-1) keer door je lijst heen lopen, en dan steeds twee items vergelijken en omdraaien indien nodig. Uiteraard is wat Cheatah hierboven zegt handiger dan gaan sorteren.

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


Verwijderd

Verwijderd schreef op 14 January 2003 @ 20:48:
IE geeft geen duidelijke foutmelding en het lukt me ook niet om het te laten werken in IE. Dit is het eerste probleem.
Jawel hij zegt dat de eigenschap of methode die jij gebruikt niet ondersteund wordt...

het gaat om deze regel:

[code
document.pView.selectedGroups.options[n] = document.pView.availableGroups.options[i]
[/code]

waaruit je mag concluderen dat het in IE een read-only eigenschap is, dwz dat je er geen waarde aan kan toekennen.

maar deze code gaat wel werken denk ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// function that puts the selected items in listbox plaatsen in listbox selPlaatsen
function SelectPlace ()
{
    var objectSelectedItems = copyOptionsObject (document.frm.sfmselPlaatsen.options);

    if (document.frm.plaatsen.selectedIndex != -1) {
        

        for (var i=0; i < document.frm.plaatsen.length; i++) {
            if (document.frm.plaatsen.options[i].selected == true && document.frm.plaatsen.options[i].text != '')
                if (document.frm.sfmselPlaatsen.length <= 4)
                    if ( !CheckForDoubles (objectSelectedItems, document.frm.plaatsen.options[i])) {
                        newOption = new Option(document.frm.plaatsen.options[i].text, document.frm.plaatsen.options[i].value, false, false);
                        document.frm.sfmselPlaatsen.options[document.frm.sfmselPlaatsen.length] = newOption;
                    }
        }
    }
}

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

code:
1
document.pView.selectedGroups.options[n] = document.pView.availableGroups.options[i]

vervangen door
code:
1
2
3
var optionText = document.pView.availableGroups.options[i].text;
var optionValue = document.pView.availableGroups.options[i].value;
document.pView.selectedGroups.options[n] = new Option(optionText, optionValue);

Intentionally left blank


Verwijderd

Topicstarter
Pff ik als javascript newbie wordt ff overbelast :P. Ik heb als eerst de methode van crisp geprobeerd, want die leek het makkelijkst. Allemaal harstikke bedankt overigens :).

Ik durf het bijna niet te vragen, maar bij deze methode wordt het item links nog niet verwijderd.

Al gefixt.

[ Voor 4% gewijzigd door Verwijderd op 14-01-2003 21:20 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 14 January 2003 @ 21:15:
Pff ik als javascript newbie wordt ff overbelast :P. Ik heb als eerst de methode van crisp geprobeerd, want die leek het makkelijkst. Allemaal harstikke bedankt overigens :).

Ik durf het bijna niet te vragen, maar bij deze methode wordt het item links nog niet verwijderd.

Al gefixt.
Dit toevoegen dus:
code:
1
document.pView.availableGroups.options[i] = null;

:) (boter na de vis)

Intentionally left blank


Verwijderd

Topicstarter
En i--; doen, maar dat was je al duidelijk :). Ik ben erg blij dat dit nu werkt, maar het sorteren lukt nog niet zo lekker. De tips die Cheetah heeft gegeven zijn een raadsel voor me.

Ik had eigenlijk meer een functie sort() verwacht zoals in PHP, maar als deze niet bestaat dan zal ik zelf (proberen) wat in elkaar te knutselen.

Verwijderd

Voor de liefhebbers

Volgens mij werkt het wel aardig onder IE. In Mozilla wil hij niet sorteren zie ik net, maar dat mag jij lekker fixen :P

Verwijderd

Topicstarter
Wazaaah! Ik wordt veel te lui dankzij jullie :P.

Echt heel erg bedankt!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Verwijderd schreef op 14 januari 2003 @ 21:50:
Voor de liefhebbers

Volgens mij werkt het wel aardig onder IE. In Mozilla wil hij niet sorteren zie ik net, maar dat mag jij lekker fixen :P
Heumz.. Foutmelding in IE 5.5
Deze eigenschap of methode wordt niet ondersteund door dit object
Regel: 31

Je manier/stijl van coden staat met trouwens wel aan! Toppie :P

[ Voor 3% gewijzigd door r0bert op 14-01-2003 23:04 ]

Pagina: 1