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
Vous devez vous connecter pour publier un commentaire.
Utilisation
ou (avec paramètres)
avec
Le "javascript:" bit est inutile.
La avec paramétrée exemple était exactement ce dont j'avais besoin, ne l'aurais jamais deviné que la syntaxe.
OriginalL'auteur keparo
Il semble que vous ne laissez pas le champs vide, mais que si l'utilisateur met un seul ou plusieurs espaces dans le champ? Si vous voulez éviter cela, vous avez besoin de couper. (Voir Steven Levithans blog différents moyens de garniture).
Si vous voulez vraiment tirer profit de la chaîne de caractères que vous pouvez utiliser:
Par compensation de l'événement onfocus vous avez créé un problème qui ne devrait pas être là. Une solution plus simple: il suffit d'ajouter le if de l'événement onfocus, de sorte qu'il n'efface que si c'est votre valeur par défaut (mais je préfère pour le sélectionner comme tvanfosson suggéré).
Je suppose que vous avez sur votre entrée-éléments ont mis la valeur de la propriété de sorte qu'une valeur est affichée dans l'entrée-éléments lorsque la page est affichée, même si javascript est désactivé. Cette valeur est disponible comme élément.defaultValue. Les primes par l'utilisation de cette approche:
.
OriginalL'auteur some
Je voudrais vous suggérer de le manipuler un peu différemment. Au lieu de dégager de la valeur, pourquoi ne pas simplement mettre en surbrillance tous, de sorte que l'utilisateur peut commencer à taper le remplacer. Ensuite, vous n'avez pas besoin de restaurer la valeur par défaut (bien que vous pouvez encore le faire de la même manière, si la valeur est vide). Vous pouvez également quitter le gestionnaire en place, puisque le texte n'est pas effacé, juste en surbrillance. L'utilisation de validation pour que la valeur n'est pas la valeur d'origine de l'entrée.
OriginalL'auteur tvanfosson
OriginalL'auteur Andrey