multple selectfield in array
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)
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
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>
<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
Kan echt niemand mij helpen? Ik zie het gewoon echt niet.. :(
of zie ik het nu fout?
Code (php)
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
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;
}
}
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
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!
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
Waar haal jij options vandaan? hij geeft aan dat die leeg of geen object is. Wat moet er gebeuren met die options?
getElementByName seleteerd de <select>
options is dus de <option> tag
Code (php)
1
2
3
4
5
6
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>';
}
?>
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
language meegeven maakt geen verschil, bovendien krijg ik er met XHTML 1.0 foutmeldingen mee.
Hij wil gewoon niet :)
btw, beetje gok hier hoor, maar als je de '.value' weghaalt bij je verwijzing:
bedoel ik dus
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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];
}
}
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..
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
Het weas heel iets anders;
Ik heb hem gaandeweg uit de functie gehaald met debuggen, maar firefox hielp al heel veel;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
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];
}
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];
}
je hebt van getElementByName, ById gemaakt? thats it??
De larray die ik zelf aanmaak (selectie) heeft geen options.. :)
mooi dat het nu werkt :D (Y)
Tja idd... bomen... bos.. =D