Modal dialogs II: browseronafhankelijk

Een 'modal dialog' is een popup 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. Helaas is de ondersteuning niet erg breed. Op het moment dat dit geschreven wordt is er alleen ondersteuning door Edge.
Als je het in je eigen site nodig hebt, zul je dus op zoek moeten naar een alternatief. Gebruikers van jQuery en/of Bootstrap hebben het gemakkelijk: die platforms hebben daarvoor voorzieningen 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.

 
terug

html-421; Laatste wijziging: 21 april 2020