En utilisant jQuery, vous pouvez le faire :
$("input:text").each(function ()
{
// store default value
var v = this.value;
$(this).blur(function ()
{
// if input is empty, reset value to default
if (this.value.length == 0) this.value = v;
}).focus(function ()
{
// when input is focused, clear its contents
this.value = "";
});
});
Et vous pouvez placer tout cela dans un plug-in personnalisé, comme par exemple :
jQuery.fn.hideObtrusiveText = function ()
{
return this.each(function ()
{
var v = this.value;
$(this).blur(function ()
{
if (this.value.length == 0) this.value = v;
}).focus(function ()
{
this.value = "";
});
});
};
Voici comment utiliser le plug-in :
$("input:text").hideObtrusiveText();
Les avantages de l'utilisation de ce code sont les suivants :
- Il est discret et ne pollue pas le DOM
- Réutilisation du code : il fonctionne sur plusieurs champs
- Il calcule lui-même la valeur par défaut des entrées
Approche non JQuery :
function hideObtrusiveText(id)
{
var e = document.getElementById(id);
var v = e.value;
e.onfocus = function ()
{
e.value = "";
};
e.onblur = function ()
{
if (e.value.length == 0) e.value = v;
};
}