Modal dialogs II: browseronafhankelijk

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 JavaScript zijn functies beschikbaar waarmee je een modal dialog op je scherm kunt laten zien. In de tijd dat dit verhaal werd geschreven was de ondersteuning niet erg breed. Als je het in je eigen site nodig had, moest je dus op zoek naar een alternatief. Gebruikers van jQuery en/of Bootstrap hadden en hebben het gemakkelijk: die platforms hebben daar voorzieningen voor aan boord. Voor de "gewone" HTML-bouwers wordt hier een browser-onafhankelijk script gepresenteerd.
De code van het voorbeeld staat onderaan de bladzijde. Je kunt hem ook downloaden om zelf te gebruiken.

Door op onderstaande knop te klikken zie je een voorbeeld.

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

 

Gebruik:

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

<style>
#MForm {
  background-color:#ffffd8;
  border:1px solid black;
  position:absolute;
  width:490px;
  height:275px;
  z-index:110; }
#MCover {
  background-color:#888;
  opacity:0.5;
  position:fixed;
  top:0;
  left:0;
  width:100%;
  height:100%;
  z-index:100; }
</style>
<script>
function VerwerkFormulier() {
  document.getElementById('FormulierInfo').innerHTML="";
  var naam = document.getElementById('fNaam').value;
  if (naam == "") naam = "(Niet ingevuld)";
  var wpl = document.getElementById('fWpl').value;
  if (wpl == "") wpl = "(Niet ingevuld)";
  resetFormulier();
  var xx = "<b>In de modal dialog ingevoerde gegevens:</b><br>
    Naam: " + naam + "<br>Woonplaats: " + wpl;
  document.getElementById('FormulierInfo').innerHTML = xx;
  document.getElementById('MForm').style.display = "none";
  document.getElementById('MCover').style.display = "none";

function geAnnuleerd() {
  var xx = "<b>In de modal dialog ingevoerde gegevens:</b><br>
   *** Het invullen is geannuleerd ***<br>&nbsp;";
  document.getElementById('FormulierInfo').innerHTML = xx;
  resetFormulier();
  document.getElementById('MForm').style.display = "none";
  document.getElementById('MCover').style.display = "none";
}
function ToonModalDialog() {
  document.getElementById('MCover').style.display = "block";
  var cc = document.getElementById('MForm').style;
  cc.left = (parseInt(window.innerWidth) -  490) / 2 + "px";
  cc.display = "block";
}
function resetFormulier() {
  document.getElementById('fNaam').value = "";
  document.getElementById('fWpl').value = "";
}
</script>

(Zet dit in de <BODY>, op de plaats waar de knop 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 in je document waar het modal dialog moet verschijnen).

<div id="MCover" style="display:none"></div>
<div id="MForm" style="display:none"><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>
</div>

(Zet dit in de <BODY>, op de plaats in je document waar de gegevens uit het modal dialog moeten verschijnen).

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

Downloaden:
 
Druk op de knop: Download deze code  File: voorb421.zip, 1376 bytes.

Opmerking:
 
In het item Modal dialogs III: HTML en CSS wordt een moderne versie voor het maken van modal dialogs beschreven.

 
terug

html-421; Laatste wijziging: 21 april 2020