Toon posts:

[JS] Select multiple, komt niet door bij submit

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een form met daarin 2 select objeten. Ééntje heb ik nodig bij de submit:
HTML:
1
<select name="groepLeden[]" size="20" multiple="multiple" class="klantgroepselect" id="groepLeden">


Nu zit ik met het volgende probleem; als ik van id maak: id="groepLeden[]" kan ik hem in mijn javascript niet meer benaderen. Als ik dit niet doe... krijgt PHP hem niet meer in de _POST array...?

In PHP benader ik met:
PHP:
1
if (isset($_POST['groepLeden'])) { $arrGroeLeden = $_POST['groepLeden']; }

In JS benader ik met:
JavaScript:
1
document.form_lbm_lidtoevoegen.groepLeden


Ervanuitgaande dat
PHP:
1
print_r($_POST);

de complete array geeft natuurlijk.

Hoe los ik het zo op dat ik zowel client-side met JS in select object kan werken als serverside met PHP?

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Even een scriptje wat ik online vond verbouwd, werkt onder Firefox:
HTML:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<html>
<head>
<script language="JavaScript">
<!--

  // Add the selected items from the source to destination list
  function addSrcToDestList() {
  
    srcList = document.getElementById('srcList'); 
    destList = document.getElementById('destList'); 

    var len = destList.length;
    for(var i = 0; i < srcList.length; i++) {
      if ((srcList.options[i] != null) && (srcList.options[i].selected)) {
        
        //Check if this value already exist in the destList or not
        //if not then add it otherwise do not add it.
        var found = false;
        for(var count = 0; count < len; count++) {
          if (destList.options[count] != null) {
            if (srcList.options[i].text == destList.options[count].text) {
              found = true;
              break;
            }
          }
        }
        
        if (found != true) {
          destList.options[len] = new Option(srcList.options[i].text); 
          len++;
        }
      }
    }
  }
  // Deletes from the destination list.
  function deleteFromDestList() {
    var destList  = window.document.forms[0].destList;
    var len = destList.options.length;
    for(var i = (len-1); i >= 0; i--) {
    if ((destList.options[i] != null) && (destList.options[i].selected == true)) {
    destList.options[i] = null; 
      }
   }
}
// End -->
</SCRIPT>
</head>
<body>
<center>
<form method="POST">
<table bgcolor="#FFFFCC">
<tr>
<td bgcolor="#FFFFCC" width="74">Available</td>
<td bgcolor="#FFFFCC">&nbsp;</td>
<td bgcolor="#FFFFCC" width="69">Selected</td>
</tr>
<tr>

<td bgcolor="#FFFFCC" width="85">
<select size="6" name="srcList[]" id="srcList" multiple="multiple">
<option value="1">Item 1
<option value="2">Item 2
<option value="3">Item 3
<option value="4">Item 4
<option value="5">Item 5
<option value="6">Item 6
</select>
</td>
<td bgcolor="#FFFFCC" width="74" align="center">
<input type="button" value=" >> " onClick="javascript:addSrcToDestList()">
<br><br>
<input type="button" value=" << " onclick="javascript:deleteFromDestList();">
</td>
<td bgcolor="#FFFFCC" width="69">
<select size="6" name="destList[]" id="destList" multiple="multiple">

</select>
</td>
</tr>
<tr>
<td colspan=3 align="center">
<input type="submit">
</td>
</tr>
</table>
</form>
</body>
</html>
<?php

print_r($_POST);

?>


Let op de name en id van de selects ;)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:34

crisp

Devver

Pixelated

En toch is dit het enige juiste antwoord:
JavaScript:
1
document.forms['form_lbm_lidtoevoegen'].elements['groepLeden[]']

CodeCaster: ik vermoed dat jouw script enkel werkt in browsers die (ten dele) IE's document.all ondersteunen; het is in ieder geval geen standaard gedrag dat elementen met een id automagisch property worden van het form-object...

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik reageer mischien voorbarig want ik heb het nog niet getest... maar let eens op de id en name van mijn select ;).

Voor de rest vind ik het script voor het verplaatsen van de items nogal omslachtig :P.
Maar ik ga het testen, mischien zie ik iets over het hoofd!

crisp: ik denk dat dat idd het antwoord is dat ik zoek! Stom dat ik daar zelf niet aan gedacht heb. Syntax fout komt natuurlijk door die []. Op deze manier niet.

[ Voor 23% gewijzigd door Verwijderd op 22-08-2007 00:38 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Edit:

ik moet van een dak springen! Was vergeten items te selecteren voor submit 8)7 8)7 8)7

[ Voor 107% gewijzigd door Verwijderd op 22-08-2007 16:26 ]


Acties:
  • 0 Henk 'm!

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Vergeet niet dat de variabele 'groepLeden' heet. de '[]' is geen onderdeel van de naam voor PHP, maar vertelt de POST array alleen dat het hier een array betreft en niet een string of een int.

Ik krijg 'groepLeden' dus gewoon netjes tevoorschijn met


PHP:
1
2
3
echo "<pre>";
var_dump($_POST['groepLeden']);
echo "</pre>";

[ Voor 1% gewijzigd door Crayne op 22-08-2007 16:35 . Reden: Items selecteren was misschien bevorderlijk geweest voor een goed debugresultaat, ja... ;) ]

Mijn Library Thing catalogus


  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Verwijderd schreef op woensdag 22 augustus 2007 @ 16:17:
Edit:

ik moet van een dak springen! Was vergeten items te selecteren voor submit 8)7 8)7 8)7
Tip voor het debuggen:
HTML:
1
2
<select name="groepLeden[]" size="20" multiple="multiple" class="klantgroepselect" id="groepLeden">
<option selected="selected" value="...">[...]</option>

;)
Pagina: 1