Modal dialogs III: HTML, CSS en JavaScript

Een 'modal dialog' is een pop-up die de werking van een programma stil zet en net zolang wacht totdat de gebruiker een reactie heeft gegeven. Een bekend voorbeeld is de melding die je krijgt met de JavaScript opdracht window.alert():

Binnen HTML bestaat de tag <dialog>, waarmee je een dialog op je scherm kunt laten zien. Dit is niet modal, maar er zijn JavaScript-functions beschikbaar waarmee een dialog als modal wordt geopend.
Om aan te geven dat de pagina buiten het dialog niet toegankelijk is wordt daar vaak een gekleurde laag over gelegd. Daar is CSS voor nodig.

Voorbeeld van een Modal dialog

Vul je naam en je woonplaats in en klik op OK, of klik Annuleren.

Geef uw naam en woonplaats
Naam: 
Woonplaats: 
   

 

In de modal dialog ingevoerde gegevens:
(Het modal dialog is nog niet getoond)
 

 

Gebruik:

De code van het voorbeeld ziet er als volgt uit:
 
(Zet dit in de <HEAD>)

<style>
#dialogDemo {
  background-color:#ffd;
}
#dialogDemo:backdrop {
  background-color:#888;
  opacity:0.5;
}
</style>

<script>
function ToonModalDialog() {
  document.getElementById('dialogDemo').showModal();
}
function VerwerkFormulier() {
// Stuur de gegevens naar de pagina
  let naam, wpl, xx;
  document.getElementById('FormulierInfo').innerHTML="";
  naam = document.getElementById('fNaam').value;
  if (naam == "") naam = "(Niet ingevuld)";
  wpl = document.getElementById('fWpl').value;
  if (wpl == "") wpl = "(Niet ingevuld)";
  resetFormulier();
  xx = "<b>In de modal dialog ingevoerde gegevens:</b><br>Naam: " +
      naam + "<br>Woonplaats: " + wpl;
  document.getElementById('FormulierInfo').innerHTML = xx;
}
function geAnnuleerd() {
  const xx = "<b>In de modal dialog ingevoerde gegevens:</b><br>
     *** Het invullen is geannuleerd ***<br>&nbsp;";
  document.getElementById('FormulierInfo').innerHTML = xx;
  resetFormulier();
}
function resetFormulier() {
  document.getElementById('fNaam').value = "";
  document.getElementById('fWpl').value = "";
  document.getElementById('dialogDemo').close();
}
</script>

(Zet dit in de <BODY>, op de plaats waar de button moet verschijnen)

<div align="center">
  <button type="button" onclick="JavaScript:ToonModalDialog()"
    style="font-size:14px;padding:5px 0;font-weight:bold;
   color:navy;">Voorbeeld van een modal dialog</button>
</div>

(Zet dit in de <BODY>, op de plaats waar de respons
van het formulier moet verschijnen)

<div id="FormulierInfo">
  <b>In de modal dialog ingevoerde gegevens:</b><br>
  (Het modal dialog is nog niet getoond)<br>&nbsp;
</div>

(Zet dit in de <BODY>; de plaats is niet van belang)

<dialog id="dialogDemo">
<p align="center"><img src="bbhead0k.gif" width="288"
    height="30" border="0"></p>
<p align="center" class="Kop2">Voorbeeld van een Modal dialog</p>
<p align="center">Vul je naam en je woonplaats in en klik op
    <b>OK</b>, of klik <b>Annuleren</b>.</p>
<div align="center"><form action="JavaScript:VerwerkFormulier()">
<table border="1" cellpadding="5" cellspacing="2"
    bgcolor="#d8d8d8" frame="box" rules="rows"><tr>
    <td colspan="3" align="center"><b>Geef uw naam
        en woonplaats</b></td>
</tr><tr>
    <td align="right"><b>Naam:</b></td><td>&nbsp;</td>
    <td><input type="text" size="30" id="fNaam"></td>
</tr><tr>
    <td align="right"><b>Woonplaats:</b></td><td>&nbsp;</td>
    <td><input type="text" size="30" id="fWpl"></td>
</tr><tr>
    <td colspan="3" align="center"><b>
        <input type="submit" value="  OK  "></b>&nbsp;&nbsp;
        <input type="button" value="Annuleren"
            onclick="JavaScript:geAnnuleerd()">
    </td>
</tr></table>
</form></div>
</dialog>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb784.zip, 1240 bytes.

Opmerking:
 
Een oudere versie voor het maken van modal dialogs wordt beschreven in het item Modal dialogs II: browseronafhankelijk.

 
terug

html-784; Laatste wijziging: 13 maart 2025