[JS] select multiple maken en alles selecteren

Pagina: 1
Acties:

  • smaij
  • Registratie: November 2000
  • Laatst online: 19:53
Hoi Allen,

Ik ben bezig met een selectbox waarin er altijd maar 1 geselecteerd mag worden. Daarom gebruik ik niet select multiple. Echter wil ik in php wel alle options hebben >:) en daarom dacht ik.. maak er bij de submit gewoon multiple van..
Ja dach.. dat werkt dus niet zomaar :'(

Ik struikel over onderstaande code heen. In Firefox werkt het allemaal lekker, maar hij weigert dienst in IE. :/

code:
1
2
3
4
5
6
7
function objectselectall(id){
document.getElementById(id).multiple = true;
for (i=0;i< document.getElementById(id).options.length;i++) {
    document.getElementById(id).options[i].selected = true;
}
document.getElementById(id).name = document.getElementById(id).name  + "[]";
}


Stel dat ik tussen multiple = true en de for lus een alertbox gooi, dan werkt het ineens wel weer! :?

Lekker vaag weer :7 Is dit een bugje in IE ?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Waarom heb je alle opties nodig in PHP? En hoe weet je nou op deze manier wat de gebruiker geselecteerd had?
Als alternatief zou je alle opties al in een hidden field kunnen opnemen, bijvoorbeeld comma-seperated. EVentueel al vanuit PHP gevuld, dan hoef je helemaal niets met JS te doen.
Waarom je de name achteraf aanpast is mij ook een raadsel, geef de select dan meteen al de goede name mee.

En ja, het kan best een bug/tekortkoming in IE zijn...

[ Voor 7% gewijzigd door crisp op 06-11-2004 11:24 ]

Intentionally left blank


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

crisp schreef op 06 november 2004 @ 11:24:
Waarom heb je alle opties nodig in PHP? En hoe weet je nou op deze manier wat de gebruiker geselecteerd had?
Als alternatief zou je alle opties al in een hidden field kunnen opnemen, bijvoorbeeld comma-seperated. EVentueel al vanuit PHP gevuld, dan hoef je helemaal niets met JS te doen.
Waarom je de name achteraf aanpast is mij ook een raadsel, geef de select dan meteen al de goede name mee.

En ja, het kan best een bug/tekortkoming in IE zijn...
Als je nou in de onclick van die select multiple het selectedItem in een hidden input knikkert, kan je nog steeds alle items meeselecteren bij je onsubmit :)

Waarom je alle opties moet hebben in PHP blijft mij ook een raadsel, als je ze van de server naar de client stuurt, heb je ze toch allemaal al?

Stop uploading passwords to Github!


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
@TS: ben je probleem recent ook tegengekomen... dit was mijn oplossing...


JavaScript:
1
2
3
4
5
6
7
8
9
function objectselectall(id){
  var objSelect = document.getElementById(id);
  objSelect.multiple = true;

    for (i=0;i< objSelect.options.length;i++) {
      objSelect.options[i].selected = true;
    }
  objSelect.name = objSelect.name  + "[]";
}


je kunt overigens imho beter werken met volledige DOM-methoden als .getAttribute() / .setAttribute()

[ Voor 9% gewijzigd door faabman op 06-11-2004 12:47 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • smaij
  • Registratie: November 2000
  • Laatst online: 19:53
Ik stuur ze niet van de server naar de client :) Er komt naast de select een knop 'Voeg Toe' die een modeldialog opent (of in Netscape/Firefox een normaal popupje) met een soort van 'filebrowser'.

Je maakt dus eigenlijk geen selectie in de select. Er mag er maar 1 geselecteerd worden om zo naar boven en naar onderen te kunnen schuiven (volgorde bepalen) en te kunnen verwijderen, of om er een nieuwe option boven te kunnen zetten (boven de geselecteerde)

Kan ik een naam selectlijst[] nog netjes aanroepen? Alhoewel is dat niet nodig natuurlijk want ik vraag ze op bij id :) Dus dat zou kunnen..

Maar het gaat eigenlijk om de multiple. Als ik <select multiple> doe werkt de select all functie wel.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

document.forms['id-van-je-form'].elements['selectlijst[]']

Intentionally left blank


  • smaij
  • Registratie: November 2000
  • Laatst online: 19:53
Ik heb nu onderstaande ervan gebrouwd en het werkt niet.
function objectselectall(id){
objectje = document.getElementById(id);
objectje.setAttribute('multiple', true);
for (i=0;i< objectje.options.length;i++) {
// document.getElementById(id).multiple = true;
objectje.options[i].selected = true;
// document.getElementById(id).name = document.getElementById(id).name + "[]";
}
//objectje.name = document.getElementById(id).name + "[]";
}
Wel word het veld multiple (net zoals de vorige versie) omdat ik hierna zelf met muis en ctr of shift wel meerdere selecties kan maken. Vreemd toch ;(
crisp schreef op 06 november 2004 @ 12:45:
document.forms['id-van-je-form'].elements['selectlijst[]']
Is dit de manier waarop ik de select zou moeten selecteren officieel gezien om het in alle browsers werkend te krijgen?

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

ooow wil je dat :)
check http://www.zapguide.nl/settings.php voor precies dat wat jij zoekt volgens mij
:)

[ Voor 7% gewijzigd door SchizoDuckie op 06-11-2004 21:56 ]

Stop uploading passwords to Github!


  • smaij
  • Registratie: November 2000
  • Laatst online: 19:53
Nouja niet helemaal.
Ik heb al een select box met multiple select optie aanstaan en daarin kan ik gewoon voor het posten alles in selecteren. Maar de probleem is dus blijkbaar dat het nu niet kan omdat het 'multiple select' niet op tijd uitgevoerd word als alle opties geselecteerd worden.
In firefox werkt het dus wel maar nog niet in IE

  • smaij
  • Registratie: November 2000
  • Laatst online: 19:53
Dit probleem: wachten op dynamische multiple bij selectbox? is het precies (eindelijk een goed zoekresultaat)
Bij hem was het met een pauze op te lossen bij mij niet :S
Ik maar er dan maar een multiple veld van.. kunnen mensen meteen alles selecteren en verwijderen etc.. Elk nadeel heeft zijn voordeel :)
Pagina: 1