Changement d'un élément onfocus gestionnaire avec Javascript?

J'ai un formulaire qui a des valeurs par défaut décrivant ce qui doit aller sur le terrain (en remplacement de l'étiquette). Lorsque l'utilisateur se concentre un champ de cette fonction est appelée:

function clear_input(element)
{
    element.value = "";
    element.onfocus = null;
}

Le onfocus est mis à null de sorte que si l'utilisateur met quelque chose dans le domaine et décide de le changer, leur contribution n'est pas effacé (il est donc effacé une fois). Maintenant, si l'utilisateur se déplace vers le prochain champ sans entrer toutes les données, alors la valeur par défaut est restaurée avec cette fonction (appelée onblur):

function restore_default(element)
{
    if(element.value == '')
    {
        element.value = element.name.substring(0, 1).toUpperCase()
                          + element.name.substring(1, element.name.length);
    }
}

Il se trouve que les valeurs par défaut sont les noms des éléments de sorte qu'au lieu de l'ajout d'un ID, j'ai juste manipulé le nom de la propriété. Le problème est que si ils sautent sur l'élément puis le onfocus événement est annulé avec clear_input mais alors jamais restauré.

J'ai ajouté

element.onfocus = "javascript:clear_input(this);";

Dans restore_default fonction, mais qui ne fonctionne pas. Comment puis-je faire cela?

OriginalL'auteur | 2008-11-15