Ce billet regroupe quelques fonctions simples et utiles en Javascript ou en PHP. Comme pour la boite à outils CSS, celle-ci est destinée à s’enrichir régulièrement.
- slideToggle() et hover() avec jQuery 1.1.2
- Mettre en évidence le lien de la page en cours avec currentPage()
- Permuter une classe CSS avec une autre avec toogleClass()
- Ouvre et centre un popup en une seule opération depuis la page appellante avec popup()
- Permutez deux classes sur un événement avec multiClass()
- footer calé en bas de page avec getWindowHeight() et setFooter()
- Envoyer un formulaire avec la touche Entrée (Quand le bouton n’est pas de type submit)
slideToggle() et hover() avec jQuery 1.1.2
Si vous voulez afficher-masquer un ensemble d’éléments ce code est fait pour vous. La ligne $(‘#links ul:lt(3)’).show(); permet d’atteindre les trois premières balises ul contenues dans la div#links. Les deux lignes suivantes appliquent respectivement : un comportemant onclick
sur les titres h2, sur lequel la méthode slideToggle() est utilisée pour afficher ou masquer l’élément qui les suit :
$(document).ready(function() { $('#links ul, #calendar table, #archives ul').hide(); $('#links ul:lt(3)').show(); $('#links h3, #calendar h2, #archives h2, #categories h2').css('cursor','pointer').click(function(){ $(this).next().slideToggle('slow'); }); });
Maintenant, il est temps de transformer ces titres cliquables avec la méthode hover() qui simule la pseudo-classe CSS :hover :
$(document).ready(function() { $('#calendar h2, #archives h2, #categories h2').hover(function() { $(this).css('border-bottom','1px dotted #065f00').css('color','#065f00'); },function() { $(this).css('color','#9E0050'); }); });
Plus d’informations sur la librairie jQuery.
Mettre en évidence le lien de la page en cours
Une fois que l’on a fait un effet de survol sur un bouton en utilisant la pseudo-classe :hover, on aimerait bien faire en sorte que cet effet de survol reste une fois le bouton cliqué, de manière à signaler la page en cours. Suivez le tutoriel associé à cette fonction PHP
<?php function currentPage($strPage) { if (strstr($_SERVER['PHP_SELF'], $strPage)) { echo 'class="current_' . $strPage. '" '; } else { echo ''; } } ?>
Cette fonction est inutilement complexe si vous utilisez le même background pour les liens. Voici une version simplifiée.
<?php function currentPageSimple($strPage) { if (strstr($_SERVER['PHP_SELF'], $strPage)) { echo 'class="current" '; } else { echo ''; } } ?>
toggleClass()
Permet de permuter une classe avec une autre. Très pratique pour afficher-masquer un balise DIV ou autre :
function toggleClass(element,class1,class2) { elt = document.getElementById(element); if (elt.className == class1) { elt.className = class2; } else if (elt.className == class2) { elt.className = class1; } }
popup()
Ouvre et centre une fenêtre popup en une seule opération depuis la page appelante. Trouvé sur wiki.media.box
function popup(l,h,url) { hauteur=Math.round((screen.availHeight-h)/2); largeur=Math.round((screen.availWidth-l)/2); window.open(url, "video", "toolbar=0,location=0,directories=0,status=0, scrollbars=0,resizable=0,menubar=0,top="+hauteur+",left="+largeur+",width="+l+",height="+h); }
multiClass()
Permute deux classes sur un évènement. Voici l’exemple fonctionnel car une explication complète serait longue et fastidieuse 🙂
MAJ du 5 juillet. L’explication longue et fastidieuse ne l’était pas autant que ça 😉 Voici le détail de la fonction multiClass.
function multiClass(eltId) { arrLinkId = new Array('_0','_1','_2','_3'); intNbLinkElt = new Number(arrLinkId.length); arrClassLink = new Array('current','ghost'); strContent = new String() for (i=0; i<intNbLinkElt; i++) { strContent = "menu"+arrLinkId[i]; if ( arrLinkId[i] == eltId ) { document.getElementById(arrLinkId[i]).className = arrClassLink[0]; document.getElementById(strContent).className = 'on content'; } else { document.getElementById(arrLinkId[i]).className = arrClassLink[1]; document.getElementById(strContent).className = 'off content'; } } }
getWindowHeight() et setFooter()
Ces deux fonctions permettent d’obtenir la hauteur de la fenêtre du navigateur pour afficher un footer calé en bas de page.
function getWindowHeight() { var windowHeight = 0; if (typeof(window.innerHeight) == 'number') { windowHeight = window.innerHeight; } else { if (document.documentElement && document.documentElement.clientHeight) { windowHeight = document.documentElement.clientHeight; } else { if (document.body && document.body.clientHeight) { windowHeight = document.body.clientHeight; } } } return windowHeight; } function setFooter() { if (document.getElementById) { var windowHeight = getWindowHeight(); if (windowHeight > 0) { var contentHeight = document.getElementById('content').offsetHeight; var footerElement = document.getElementById('footer'); var footerHeight = footerElement.offsetHeight; if (windowHeight - (contentHeight + footerHeight) >= 0) { footerElement.style.position = 'relative'; footerElement.style.top = (windowHeight - (contentHeight + footerHeight)) + 'px'; } else { footerElement.style.position = 'static'; } } } } window.onload = function() { setFooter(); } window.onresize = function() { setFooter(); }
Envoyer un formulaire avec la touche Entrée
(Quand le bouton n’est pas de type `submit`)
function submitForm(e) {
var code = e.keyCode;
if (code==13)
document.getElementById(‘formulaire’).submit();
}
//onkeyup= »submitForm(event) dans le formulaire