Dit gaat hier over een dropdown die velden laat verschijnen afhankelijk van de keuze van de dropdown.
Dit werkt perfect als je de waarde nog moet kiezen maar niet als ze al gekozen is zoals hieronder. Dit betreft een aanpaspagina van eerder ingevulde gegevens.

De dropdown:

$sql = "SELECT * FROM accountics WHERE id = '$id'";
$res = mysql_query($sql) or die (mysql_error());
				   
while($row = mysql_fetch_assoc($res)) {


<div class="col-sm-10">
  <select name="categorie" class="form-control" id="selectMe">
	<option selected value="<?php echo $row['categorie']; ?>"><?php echo $row['categorie']; ?></option>
                                        
         <?php                           
		 $sql1 = "SELECT distinct naam FROM lijst_accountics_categorie";
		 $res1 = mysql_query($sql1) or die (mysql_error());

                 while($row = mysql_fetch_assoc($res1)) { 
         ?>                           
                                        
         <option value="<?php echo $row['naam']; ?>"><?php echo $row['naam']; ?></option>
                                        
         <?php 
         }
		 
	 $sql = "SELECT * FROM accountics WHERE id = '$id'";
	 $res = mysql_query($sql) or die (mysql_error());
				   
         while($row = mysql_fetch_assoc($res)) { 
		 
	 ?>                               
                                        
  </select>
</div>


Daaronder komen de div's die moeten opgeroepen worden afhankelijk van de selectie uit de dropdown.

<!-- Start restaurant -->
<div id="Restaurant" class="group">
                                
  <div class="col-sm-10">
     <input type="text" name="bedrag1_excl" class="form-control" id="field-1" value="<?php echo $row['bedrag1_excl']; ?>">
  </div>

</div>


<!-- Start als categorie niet gelijk is aan Restaurant -->
<div id="Geen" class="group">
                                
   <div class="col-sm-10">
       <input type="text" name="bedrag_excl" class="form-control" id="field-1" value="<?php echo $row['bedrag_excl']; ?>">
   </div>
</div>

</div>


Hieronder hebben we de javascript die daarbij hoort. Denk dat hier wel nog enkele wijzigingen zullen aan moeten gebeuren om dit goed werkende te krijgen. Verder uitleg staat onder de javascript code.
De waarde 'Geen' betreft alles wat niet als restaurant is geselecteerd.

<script>
$(document).ready(function () {
  $('.group').hide();
  $('#Geen').show();
  
  $('#selectMe').change(function () {
    $('.group').hide();
    
var Restaurant = document.getElementById("selectMe").value;	

if(Restaurant === 'Restaurant') {
	$('#Restaurant').show();
} else {
	$('#Geen').show();
}	

  })
});
</script>


Als ik die aanpaspagina refresh staan de waarden uit de database in de dropdown wel juist ingevuld maar de velden die overeen komen met de geselecteerde waarde houden geen rekening met de javascript. Dus ze komen niet naar boven. Wat is er aan mijn javascript fout?

$('#selectMe').change(function () {
    $('.group').hide();
    
var Restaurant = document.getElementById("selectMe").value;    

if(Restaurant === 'Restaurant') {
    $('#Restaurant').show();
} else {
    $('#Geen').show();
}    

  })


Dit deel wordt gestart als de div met id selectMe wordt gewijzigd, niet als de pagina inlaad. In jouw geval worden de waardes al eerder geselecteerd en moet je dat deel dus naar de de document ready zetten zodat het wordt ingeladen als de pagina start.
Nee dat is het niet. Nu krijg ik beide div's te zien, zowel die van restaurant als die van geen.
Wat wel werkt is als je dan even dat veld aanpast in iets anders en dan terug zet op restaurant werkt het wel. Maar niet bij het inladen van de pagina.
Waarschijnlijk werkt dat niet omdat elke option een SELECTED mee krijgt in regel 9.
Hoe kan ik anders weten wat er al was opgeslagen in de database? Dit kan ik niet weglaten anders start die iedere keer bij een lege select... Andere oplossingen hiervoor?
Even uitgaande van je eerste dropdown uit je post.

In je select bouw je een lijst met options.
Waarom laat je categorie zien als optie (op regel 9) plus alle waardes uit lijst_accountics_categorie (op regel 18 in de lus)?
En waarom maak je die op regel 9 altijd selected? Zou dat niet de option regel moeten zijn waarvan de waarde in de database staat?

Iets als:

         <option value="<?php echo $row['naam']; ?>" <?php echo ($categorie == $row['naam']) ? "selected" : ""; ?>><?php echo $row['naam']; ?></option>


Dit maakt die option selected waarvan de naam gelijk is aan de categorie.
$categorie = $row['categorie'] gezet, voor regel 12 (omdat je 2 maal $row gebruikt voor je sql resultaat).

Ook hier weer, uit de losse pols opgetikt, dus misschien hier en daar een foutje.
Regel 9 geeft het resultaat wat in de database staat als option weer, en de value is dezelfde naam omdat dat in de javascript is gebruikt.
Regel 18 is nodig als je de dropdown opent dat er waarden in staan. Anders is dat leeg... Zo kan je van de eerder geselecteerde option die veranderen door iets anders te kiezen in de lijst en dit zijn dan de waarden uit de lijst_accountics_categorie.

Ik zal jouw manier eens bekijken, jan. Geen idee wat de uitkomst daarvan gaat zijn. Misschien dat dit inderdaad wel werkt dan. Ik laat nog iets weten hier straks.



Toevoeging op 21/01/2015 21:49:53:

@Jan: ik heb alles beetje aangepast en het resultaat is:

<option value="<?php echo $row['naam']; ?>" <?php if ($categorie == $row['naam']) { echo "selected"; } else { echo ""; } ?>><?php echo $row['naam']; ?></option>


En natuurlijk eerst juist onder de while loop de regel $categorie = $row['categorie'] toevoegen.

Maar het is nog steeds hetzelfde resultaat. Mijn eerdere versie en de jouwe zijn hetzelfde. Alleen spaar ik met jouw versie een regel uit.
Het zal dus wel een javascript probleem zijn, maar niemand weet hier precies wat het probleem is want de reacties zijn heel laag.
Wat wil je hier mee bereiken? In de html staan 2 div's met exact dezelfde inhoud, zelfs id's zijn hetzelfde (wat niet mag).
In wat pseudo code doe je dit:
[code]
<?php
if (x == "Restaurant") {
echo 'Hallo wereld';
}
else {
echo 'Hallo wereld';
}
?>
Nu ben ik niet meer mee. Zelfde id's? Zelfde div's?
Bedoel je dan bij de input velden? Dit zit volledig in een bootstrap framework dus dezelfde id's op input fields kan maar heeft niks met de javascript te maken.
Kan je eens uitleggen wat je bedoeld met je pseudo code?
Ik dacht dat de div's exact hetzelfde waren maar er zit inderdaad een miniem verschil in.

Wat ik op maak aan de hand van de door jouw aangeleverde informatie is dat je dingen onnodig moeilijk aan het maken bent.

Buiten dat, je hebt het verbergen/tonen van de div's in de change evenListener staan, dus dit wordt pas uitgevoerd nadat er iets veranderd in the select (dit is al eerder door Peter Flos aangegeven).
Maar als je dus NA het aanmaken van de eventListener de event triggert:
[code lang="js"]
$("#selectMe").trigger("change");
[/code]
Dan zal het met de aan zekerheid grenzende waarschijnlijkheid wel goed gaan
Nu begrijp ik niet waar ik die trigger moet invoeren. Moet ik dan regel 6 van de javascript veranderen door jouw voorbeeld?

Reageren