multple selectfield in array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wout van der Burg

Wout van der Burg

18/01/2010 16:17:00
Quote Anchor link
Hallo,

Ik probeer de waarden van een selectfield (multiple) in een javascript array te proppen, maar dit lukt mij niet. Ziet iemand wat ik verkeerd doe?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<table>
<tr>
    <td>
        <select name="email" id="email" multiple="multiple" size="5" style="width:150px;" >
        <?php
        $rsgebr
= mysql_query("SELECT ".GEBR_NAAM.", ".GEBR_TUSVG.", ".GEBR_ACHTERNAAM.", ".GEBR_EMAIL." FROM ".GEBR." WHERE ".GEBR_WERKZAAM." = 1 ORDER BY ".GEBR_ACHTERNAAM);
        while($rowgebr = mysql_fetch_array($rsgebr)) { ?>

            <option value="<?php echo $rowgebr[GEBR_EMAIL]; ?>"><?php echo $rowgebr[GEBR_ACHTERNAAM].", ".$rowgebr[GEBR_NAAM]." ".$rowgebr[GEBR_TUSVG]; ?></option>
        <?php } ?>
        </select>
    </td>
</tr>
</table>
<script type="text/JavaScript">
var selected= new Array();
var sum="";
function getMultipleSelection(elementName,array){
    var mySelect = document.getElementsByName[elementName];
    for(j = 0; j  < mySelect.options.length; j++) {
        if(mySelect.options[j].selected) {
            selected.push(mySelect.options[j].value);
        }
    }
    if(array != 'true') return selected.toString();
    else return selected;
}
getMultipleSelection('email',true);
for(var j = 0; j < selected.length; ++j) {
    if (selected.options[j].selected==true) {
        sum += '&srvcnr'+j+'='+selected.options[j].value;
    }
}
</script>


edit;
Ik krijg de volgende foutmelding volgens IE;

Bericht: 'options' is leeg of geen object
Regel: 1281
Teken: 17
Code: 0
URI: www.bla.nl
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
 
PHP hulp

PHP hulp

19/04/2024 07:03:05
 
Wout van der Burg

Wout van der Burg

19/01/2010 09:37:00
Quote Anchor link
Kan echt niemand mij helpen? Ik zie het gewoon echt niet.. :(
 
Koen

koen

19/01/2010 10:09:00
Quote Anchor link
je noemt je array selection, en je pushed de gegeven in selected
of zie ik het nu fout?
 
Mr.Ark

Mr.Ark

19/01/2010 10:13:00
Quote Anchor link
Probeer dit eens.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var selected = new Array();
var sum = "";

function getMultipleSelection(elementName, array)
{
    var mySelect = document.getElementsByName[elementName];
    
    for(var j = 0; j < mySelect.options.length; j++)
    {
        if(mySelect.options[j].selected)
        {
            selected.push(mySelect.options[j].value);
        }
    }
    
    if(array != 'true')
    {
        return selected.toString();
    }
    else
    {
        return selected;
    }
}

getMultipleSelection('email', true);

for(var j = 0; j < selected.length; j++)
{
    if(selected.options[j].selected == true)
    {
        sum += '&srvcnr'+j+'='+selected.options[j].value;
    }
}
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 
Wout van der Burg

Wout van der Burg

19/01/2010 11:29:00
Quote Anchor link
@koen;
Klopt foutje :) In mijn eigen script had ik het wel al gezien, dus het maakte geen verschil, tnx

@Mr. Ark
Ik kon niet zo snel verschil ontdekken, dus ik heb em even ge-copy-paste. De output blijft hetzelfde.. :( tnx!
 
Koen

koen

19/01/2010 11:31:00
Quote Anchor link
wat voor name geef je mee als naam waar je
getElementByName(elementname) gebruikt?
misschien zit t daar?

edit nvm, las te snel
zet bij je script tag ook de language neer
<script type="text/javascript" language="javascript">
Gewijzigd op 01/01/1970 01:00:00 door koen
 
Mr.Ark

Mr.Ark

19/01/2010 11:36:00
Quote Anchor link
Waar haal jij options vandaan? hij geeft aan dat die leeg of geen object is. Wat moet er gebeuren met die options?
 
Koen

koen

19/01/2010 11:39:00
Quote Anchor link
@mr ark,
getElementByName seleteerd de <select>
options is dus de <option> tag
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
while($rowgebr = mysql_fetch_array($rsgebr))
{

echo '<option value="'.$rowgebr[GEBR_EMAIL].'">'.$rowgebr[GEBR_ACHTERNAAM].' '.$rowgebr[GEBR_NAAM].' '.$rowgebr[GEBR_TUSVG].'</option>';
}

?>

is btw makkelijker
Gewijzigd op 01/01/1970 01:00:00 door koen
 
Wout van der Burg

Wout van der Burg

19/01/2010 11:45:00
Quote Anchor link
@koen
language meegeven maakt geen verschil, bovendien krijg ik er met XHTML 1.0 foutmeldingen mee.

Hij wil gewoon niet :)
 
Koen

koen

19/01/2010 11:52:00
Quote Anchor link
oeps, had mijn eigen test verkeerd bekeken sorry :P

btw, beetje gok hier hoor, maar als je de '.value' weghaalt bij je verwijzing:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
selected.push(mySelect.options[j].value);

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
selected.push(mySelect.options[j]);

bedoel ik dus
 
Wout van der Burg

Wout van der Burg

19/01/2010 11:56:00
Quote Anchor link
Ik heb hem een klein beetje aangepast, ook met jouw tip, Koen;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function getMultipleSelection(elementName, array) {
    var mySelect = document.getElementsByName(elementName);
    var selectie = new Array();
    for(var j = 0; j < mySelect.options.length; j++)
    {
        if(mySelect.options[j].selected)
        {
            selectie.push(mySelect.options[j]);
        }
    }
    return selectie;
    
}
getMultipleSelection('email[]', 'true');
for(var k = 0; k < selectie.length; k++) {
    if(selectie.options[k].selected == true) {
        sum2 += '&email'+k+'='+selectie.options[k];
    }
}


Nu krijg ik de volgende fout;

Bericht: 'options.length' is leeg of geen object
Regel: 1184
Teken: 22
Code: 0
URI: http://bla.com


Ik denk nu dat ik het aantal options verkeerd tel in de select array..
 
Koen

koen

19/01/2010 11:59:00
Quote Anchor link
mySelect.options.length
vervang dat eens met
mySelect.length
??
dit leest uit hoeveel opties er in mySelect staan.
dan kan je met mySelect[] die optie uitlezen.

hope this helps

ps.
firefox + webdevelopers-toolbar heeft een mooie controle op je javascript, en geeft weer of en waar die fout gaat.
Gewijzigd op 01/01/1970 01:00:00 door koen
 
Wout van der Burg

Wout van der Burg

19/01/2010 13:25:00
Quote Anchor link
jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa hij doet het! :) :)

Het weas heel iets anders;
Ik heb hem gaandeweg uit de functie gehaald met debuggen, maar firefox hielp al heel veel;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
var selectie = new Array();
var sum2 = '';
var mySelect = document.getElementById('email');
for(var j = 0; j < mySelect.options.length; j++)
{
    if(mySelect.options[j].selected == true)
    {
        selectie.push(mySelect.options[j].value);
    }
}
for(var k = 0; k < selectie.length; k++) {
    sum2 += '&email'+k+'='+selectie[k];
}
 
Koen

koen

19/01/2010 13:30:00
Quote Anchor link
je hebt van getElementByName, ById gemaakt? thats it??
 
Wout van der Burg

Wout van der Burg

19/01/2010 13:57:00
Quote Anchor link
Nee kijk ook goed naar de laatste for-lus
De larray die ik zelf aanmaak (selectie) heeft geen options.. :)
 
Koen

koen

19/01/2010 13:58:00
Quote Anchor link
mooi dat het nu werkt :D (Y)
 
Wout van der Burg

Wout van der Burg

19/01/2010 14:11:00
Quote Anchor link
Tja idd... bomen... bos.. =D
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.