Utiliser Bootstrap pour remplacer la fenêtre de confirmation Javascript

Changer l’aspect de la fenêtre de confirmation Javascript avec une modal Bootstrap.

Souvent dans une application lorsqu’on a une fonction qui va supprimer quelque chose, on demande confirmation par sécurité. Dans le développement web, cela peut se faire par exemple avec confirm() de Javascript, déclenché par le clic sur un lien avec l’attribut onclick de la balise a. Ceci est bien old-school pour plusieurs raisons que je ne parlerai pas ici.

Confirmation dans Google Chrome
Confirmation dans Google Chrome

Ce court billet met en place une boîte de dialogue de confirmation utilisant Bootstrap, apportant un aspect un peu plus joli que la fenêtre système de confirmation.

$(function() {
	$('a[data-confirm]').click(function(ev) {
		var href = $(this).attr('href');
		
		if (!$('#dataConfirmModal').length) {
			$('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Merci de confirmer</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Non</button><a class="btn btn-danger" id="dataConfirmOK">Oui</a></div></div></div></div>');
		}
		$('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm'));
		$('#dataConfirmOK').attr('href', href);
		$('#dataConfirmModal').modal({show:true});
		
		return false;
	});
});

Comme on le voit dans le code jQuery, cette action est déclenchée lors d’un clic sur un élément a possédant un attribut data-confirm qui par ailleurs servira de titre à la fenêtre modale. Voici un exemple de lien qui ouvre la modale :

<a href="" data-confirm="Etes-vous certain de vouloir supprimer?">Suppression</a>
Confirmation modale avec Bootstrap
Confirmation modale avec Bootstrap

Testez vous-même avec l’exemple ci-contre : bootstrap-modal.zip