Dynamic select geeft geen value bij POST van form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sabba sabba

sabba sabba

29/12/2011 14:50:35
Quote Anchor link
Hallo,

Ik heb een form met daarin 2 selectboxen.
Box1 is standaard gevuld en Box2 is leeg.
Wanneer je in Box1 iets selecteerd wordt er via een Ajax en SQL Box2 gevuld.

Dit gaat allemaal goed maar wanneer ik dan het form post krijg ik wel de geselecteerde waarde uit Box1 te zien maar niet uit Box2 te zien.

Wanneer ik het volgende in mijn form pagina stop;
echo "<pre>";
print_r($_POST);
echo "</pre>";

En ik post het form dan zie ik de naam van Box2 helemaal niet in de lijst staan.
Ik heb in de form pagina Box2 in een div gestopt en wanneer je iets selecteerd uit Box1 wordt het volgende uitgevoerd;

$('#box2').empty();
$('#box2').append(tijden);
$('#box2').show();

Ik haal de div (met hierin Box2 die leeg is weg) en append de nieuwe Box2 met hierin alle juiste selectiemogelijkheden.

Kan iemand mij misschien vertellen wat ik zou moeten doen om wel de waarde te krijgen bij het posten van het form?
 
PHP hulp

PHP hulp

22/12/2024 18:56:18
 
- SanThe -

- SanThe -

29/12/2011 14:55:53
Quote Anchor link
Eerste vraag die bij mij opkomt is: Staat alles wel TUSSEN de <form> tags?
 
Sabba sabba

sabba sabba

29/12/2011 16:57:57
Quote Anchor link
Ja het staat allemaal netjes tussen de <form> tags.
Als ik namelijk de pagina laad en Box1 en Box2 zijn nog met de standaard selectie en ik druk op de knop krijg ik wel beide waardes te zien in $_POST.

Maar wanneer ik iets in Box1 selecteer krijg ik wanneer ik het form post geen Box2 waarde meer. Die hele Box2 waarde is dan ook weg alsof hij niet meer in het form zit, terwijl hij wel gewoon in de pagina zichtbaar is.
 
- SanThe -

- SanThe -

29/12/2011 17:06:22
Quote Anchor link
En hoe ziet de html (broncode) er uit van de 2e box?
 
Sabba sabba

sabba sabba

30/12/2011 11:36:04
Quote Anchor link
Dit is de default code;

<span id="box2"><select name="box2" class="van"><option value="" SELECTED>tot</option></select></span>

En wanneer er dus uit box1 iets geselecteerd wordt, wordt de span leeggemaakt en de select opnieuw aangemaakt met dezelfde naam en class alleen de options worden toegevoegd.
 
Erwin H

Erwin H

30/12/2011 11:38:29
Quote Anchor link
Haal die span erom heen eens weg, lukt het dan wel?

Je kan namelijk ook gewoon de options aanmaken binnen de select, op dezelfde manier als je nu de select toevoegt binnen de span. Die span is dus overbodig en vanwege de id van de span die gelijk is aan de naam van de select heb ik het vermoeden dat dat een conflict geeft.
Gewijzigd op 30/12/2011 11:39:52 door Erwin H
 
Sabba sabba

sabba sabba

30/12/2011 14:19:43
Quote Anchor link
Dat had ik ook al geprobeerd alleen dan vernieuwd mijn select box niet meer als ik de span eromheen weghaal.
Ik heb ook al de span een andere naam gegeven maar dan krijg ik precies hetzelfde.

Ik kan nog wel even uitzoeken hoe ik de option's binnenin de select box kan vernieuwen, inplaats van de hele selectbox opnieuw te plaatsen om te kijken of dat iets uitmaakt...
 
Erwin H

Erwin H

30/12/2011 14:27:45
Quote Anchor link
Dat laatste zou ik in elk geval doen, want die span is nu een overbodige tag.

Als je id van de select bijvoorbeeld "select2" is, dan kan je op deze manier de select leeggooien en er nieuwe options aan toevoegen:
$("#select2").empty().append('<option value="1">tekst</option>');
 
Kris Peeters

Kris Peeters

30/12/2011 14:28:45
Quote Anchor link
Ik denk dat je zoiets bedoelt:

index.php
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
35
36
37
38
39
40
41
42
43
44
45
<?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    echo '<pre>' . print_r($_POST, 1) . '</pre>';
  }

?>

<html>
  <head>
    <script src="jquery.js"></script>
    <script>
      $(document).ready(function(e){
        /**
        *  functie wordt aangeroepen wanneer box1 wordt veranderd.
        */
        $("#box1 select").change(function(e) {
          // ajax verzoek:
          $.ajax({
             type: "POST",
             url: "ajaxrequest.php",
             data: "box1=" + escape($("#box1 select").val()),
             success: function(msg){
                // ajax resons
                $('#box2').empty();
                $('#box2').append(msg);
                $('#box2').show();
             }
          });
        });
      });
    </script>
  </head>
  <body>
    <form action="" method="post">
      <span id="box1">
        <select name="box1" >
          <option value="0">---</option>
          <option value="1">auto</option>
          <option value="2">fruit</option>
          <option value="3">kleur</option>
        </select>
      </span>
      <span id="box2"></span>
      <input type="submit" />
    </form>
  </body>
</html>


ajaxrequest.php:
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
<?php
/*
Voorbeeldje van een ajax respons, die op basis van $_POST['box1'], een selectbox genereert  
*/

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (!empty($_POST['box1'])) {
    switch ($_POST['box1']) {
      case
1: echo '<select name="box2"><option value="Ferrari">Ferrari</option><option value="Porche">Porche</option></select>'; break;
      case
2: echo '<select name="box2"><option value="Citroen">Citroen</option><option value="Appel">Appel</option><option value="kers">kers</option></select>'; break;
      case
3: echo '<select name="box2"><option value="rood">rood</option><option value="groen">groen</option><option value="blauw">blauw</option></select>'; break;
    }
  }
}

?>


uiteraard jquery niet vergeten
 
Sabba sabba

sabba sabba

30/12/2011 14:45:34
Quote Anchor link
Ik heb even gezocht hoe je de select options kan toevoegen en nu werkt het wel dat ik de post value krijg van box2. Dus ik maak niet meer de hele selectbox opnieuw aan maar ik leeg hem en voeg de juiste opties eraan toe.

Het ging dus fout bij het opnieuw maken van de selectbox op 1 of andere manier.

@Kris Peeters: Zoiets heb ik ook ongeveer uiteindelijk.

Heren hartstikke bedankt voor jullie hulp!
Zonder jullie was ik er nog niet achter gekomen :)
 
Erwin H

Erwin H

30/12/2011 15:19:50
Quote Anchor link
Dit:
$('#box2').empty();
$('#box2').append(msg);
$('#box2').show();

kan je alleen in een keer schrijven, dat scheelt tijd. JQuery hoeft dan maar een keer het element in de DOM op te zoeken.
$('#box2').empty().append(msg).show();
 
Lendl Verschoor

Lendl Verschoor

30/12/2011 15:34:04
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$("#box1 select").change(function(e) {

volgens mij heeft een span geen select.
denk dat je deze op de checkbox moet zetten
 
Kris Peeters

Kris Peeters

30/12/2011 15:45:10
Quote Anchor link
'#box1 select' betekent: een <select> element (of eventueel meerdere elementen) binnenin gelijk welk element met id="box1".

Dat werkt op de zelfde manier als css.
Gewijzigd op 30/12/2011 15:47:48 door Kris Peeters
 



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.