Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2011, 18h53   #1
Invité de passage
 
Homme Jonathan Zimmermann
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Jonathan Zimmermann
Localisation : Suisse

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 3
Points : 3
Par défaut Trouver l'input d'un label

Bonjour,

J'essaye de créer un script permettant de gérer la couleur de fond de mes éléments de formulaire. Voilà où j'en suis actuellement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
jQuery('input, textarea, select, label').hover(function()
		{
			if(jQuery(this).is(":focus"))
				{
 
				}
			else
				{
					jQuery(this).stop();
					jQuery(this).animate({ 'backgroundColor' : '#ffe3ac'}, 200);
				}
		});
 
		jQuery('input, textarea, select, label').mouseout(function()
			{
				if(jQuery(this).is(":focus"))
					{
 
					}
				else
					{
						jQuery(this).stop();
						jQuery(this).animate({ 'backgroundColor' : '#fff'}, 500);
					}
			});
 
		jQuery('input, textarea, select, label').focus(function()
			{
				jQuery(this).stop();
				jQuery(this).animate({ 'backgroundColor' : '#ffcf77'}, 500);
			});
 
		jQuery('input, textarea, select, label').blur(function()
			{
				jQuery(this).stop();
				jQuery(this).animate({ 'backgroundColor' : '#fff'}, 500);
			});
Le problème de ce script, c'est que lorsqu'on a le mouseover sur un label, c'est bien sûr le label qui voit sa couleur de fond changer et non pas le input...

Y aurait-il donc un moyen de trouver l'input correspondant à un label ou quelque chose de ce genre pour parer à ce problème ?

Merci d'avance de vos réponses,

7804j
7804j est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 20h20   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
Fais un test sur l'attribut for de jQuery(this) et s'il existe et est non vide, applique le traitement sur l'élément correspondant :
Code :
1
2
3
if(jQuery(this).attr('for')){
    jQuery('#'+jQuery(this).attr('for')).animate(...);
}
ou même
Code :
1
2
3
if(this.htmlFor){
    jQuery('#'+this.htmlFor).animate(...);
}
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 21h55   #3
Invité de passage
 
Homme Jonathan Zimmermann
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Jonathan Zimmermann
Localisation : Suisse

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 3
Points : 3
Merci !

Voilà quand même mon code final, au cas où (peut-être pas optimisé :/) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
jQuery('input, textarea, select, label').hover(function()
		{
			if(jQuery(this).attr('for'))
			{
				if(jQuery('#'+jQuery(this).attr('for')).is(":focus"))
					{
 
					}
				else
					{
						jQuery('#'+jQuery(this).attr('for')).stop();
						jQuery('#'+jQuery(this).attr('for')).animate({ 'backgroundColor' : '#ffe3ac'}, 200);
					}
			}
			else if(jQuery(this).is(":focus"))
				{
 
				}
			else
				{
					jQuery(this).stop();
					jQuery(this).animate({ 'backgroundColor' : '#ffe3ac'}, 200);
				}
		});
 
	jQuery('input, textarea, select, label').mouseout(function()
		{
			if(jQuery(this).attr('for'))
			{
				if(jQuery('#'+jQuery(this).attr('for')).is(":focus"))
					{
 
					}
				else
					{
						jQuery('#'+jQuery(this).attr('for')).stop();
						jQuery('#'+jQuery(this).attr('for')).animate({ 'backgroundColor' : '#fff'}, 500);
					}
			}
			else if(jQuery(this).is(":focus"))
				{
 
				}
			else
				{
					jQuery(this).stop();
					jQuery(this).animate({ 'backgroundColor' : '#fff'}, 500);
				}
		});
 
	jQuery('input, textarea, select').focus(function()
		{
			jQuery(this).stop();
			jQuery(this).animate({ 'backgroundColor' : '#ffcf77'}, 500);
		});
 
	jQuery('input, textarea, select').blur(function()
		{
			jQuery(this).stop();
			jQuery(this).animate({ 'backgroundColor' : '#fff'}, 500);
		});
7804j est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h05.


 
 
 
 
Partenaires

Hébergement Web