Beste mensen,

Ik maak gebruik van Bootstrap in combinatie met jquery. Ik heb een dropdown button gemaakt waar één van de opties is om een afbeelding te uploaden. Wanneer ik de optie 'Afbeelding' kies, wil ik een file select control weergeven om zo de juiste afbeelding te kiezen.

Normaal krijg je de file select control te zien met de volgende HTML code:


 <label for="myfile">Select a file:</label>
 <input type="file" id="myfile" name="myfile"> 

Echter hoe zou ik dit nu kunnen aanpakken in de dropdown button?


 <div class="btn-group pull-right" style="margin-top:17px; margin-left:15px">
  <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
     Toevoegen <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li><a class="afbeelding" href="#">Afbeelding</a></li>>
    <li><a class="youtube" href="#">Word document</a></li>
    <li><a class="soundcloud" href="#">PDF</a></li>
  </ul>
 </div>

Normaal trigger ik met de class "afbeelding" een jquery functie. Wanneer het de file select control toevoeg tussen de <li> of <a> tags, krijg ik het grafisch niet voor elkaar om de layout met een 'handje' netjes te krijgen.

Heeft er iemand een tip?

[size=xsmall]Toevoeging op 21/01/2021 11:25:32:[/size]

Toch voor elkaar gekregen.

		<div class="btn-group pull-right" style="margin-top:17px; margin-left:15px">
  		<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
    		Toevoegen <span class="caret"></span>
  		</button>
  		<ul class="dropdown-menu" role="menu">
		    <li><a class="image" href="#">Afbeelding</a></li>
		    <li><a class="youtube" href="#">YouTube</a></li>
		    <li><a class="soundcloud" href="#">SoundClound</a></li>
  		</ul>
		</div>

		<input type="file" name="s_file" id="s_file" class="hidden" accept=".jpg">


Daarna met jquery:


		$(".image").click(function(){			// Afbeelding wordt aangeklikt in dropdownmenu waardoor file select object wordt weergegeven
			$("#s_file").trigger("click");
		});


In plaats van class="afbeelding" zou je data-img="afbeelding" moeten gebruiken omdat dat eigenlijk de HTML5/Bootstrap wijze is. Het allerbeste zou zijn als je dit vervolgens met een AJAX-call zou afhandelen. Een voorbeeld hier: https://www.codobyte.com/pim/ en wijzigen de Taalkeuze in de menubalk. Mocht je iets van script nodig hebben, laat maar weten. Dit is slechts een testpagina, dus de content is onzin.

Reageren