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 05/08/2011, 17h20   #1
Membre éclairé
 
Avatar de hisy
 
Inscription : novembre 2004
Messages : 373
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 373
Points : 300
Points : 300
Par défaut $(#elem).attr() : plusieurs actions sur le onChange

Bonjour,
J'utilise pour appliquer des vérfications à certains champs d'un formulaire.
Malheureusement certains de ces champs on déjà des évenements sur le onChange ...
Existe t il un moyen d'ajouter une action sur cet événement sans effacer l'action déjà présente ?

Meric par avance.
__________________
Take it HiSy
hisy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 18h12   #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 797
Points : 35 797
Il ne faut pas passer par attr() pour gérer les événements avec jQuery !
La gestion des événements par la bibliothèque est beaucoup plus efficace et permet d'attacher autant d'actions que tu veux pour un même événement :
Code :
1
2
$('input').change(fonction1);
$('input').change(fonction2);
http://api.jquery.com/category/events/
__________________
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 06/08/2011, 13h07   #3
Membre éclairé
 
Avatar de hisy
 
Inscription : novembre 2004
Messages : 373
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 373
Points : 300
Points : 300
Ben que dire ...

Merci ..
__________________
Take it HiSy
hisy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 16h33   #4
Membre éclairé
 
Avatar de hisy
 
Inscription : novembre 2004
Messages : 373
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 373
Points : 300
Points : 300
Ha si ...

Comment passer des paramètres à cette fonction ?
Je m'explique, après chargement, je veux appliquer des tests sur tous les champs obligatoires que j'ai dans un tableau.
Si je fais ça:

Code :
1
2
3
4
5
6
7
8
 
$(function(){	
	for(i=0; i < aMandatories.length; i++ ) {
		elem = aMandatories[i];
		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
		$("#" + elem).change(function() { verifLength(elem,2,'Champ obligatoire')} );
	}
});
elem est undfined pour verifLength()

et si je fais :

Code :
1
2
3
4
5
6
7
8
 
$(function(){	
	for(i=0; i < aMandatories.length; i++ ) {
		elem = aMandatories[i];
		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
		$("#" + elem).change( verifLength( elem,2,'Champ obligatoire')} );
	}
});
verifLength() joué au chargement de la page pour tous les champs.
Il doit y avoir un truc que je zap genre un passage par référence
__________________
Take it HiSy
hisy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 14h28   #5
Membre éclairé
 
Avatar de hisy
 
Inscription : novembre 2004
Messages : 373
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 373
Points : 300
Points : 300
Ok je reviens à la charge ...

en fait mon problème est un problème de persistance/portée des variables.
je m'explique, voici mon code :

Code :
1
2
3
4
5
6
7
8
$(function(){	
	$('select').append( new Option("- - CHOISISSEZ - -","") );
	for(i=0; i < aMandatories.length; i++ ) {
		elem = aMandatories[i];
		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
		$("#" + elem).change(function() { verifLength(elem,2,'Champ obligatoire')} );
	}
});
L'idée est donc de mettre un test sur le onChange des champs obligatoires listés dans mon tableau aMandatories[i]. Mais quelque soit le champ modifier, la methode verifLength est appelée avec elem qui vaut la dernière valeur de mon champ et non l'élément i de mon tableau ...

Merci pour votre aide ...
__________________
Take it HiSy
hisy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 14h33   #6
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 797
Points : 35 797
C'est normal et expliqué dans la : Comment attribuer à des objets un onclick faisant appel à une variable de boucle ?
Avec jQuery, tu peux passer par prop() ou data() pour affecter des propriétés spécifiques à un objet
Code :
1
2
3
4
5
6
7
8
9
$(function(){	
	$('select').append( new Option("- - CHOISISSEZ - -","") );
	for(i=0; i < aMandatories.length; i++ ) {
		elem = aMandatories[i];
		$("#" + elem).prop('rang', i);
		$("#" + elem).css({borderLeft : "2px solid coral"}).css({borderRight : "2px solid coral"});	
		$("#" + elem).change(function() { verifLength(elem,2,'Champ obligatoire')} );
	}
});
et dans la fonction verifLength, tu testes
__________________
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 08/08/2011, 16h53   #7
Membre éclairé
 
Avatar de hisy
 
Inscription : novembre 2004
Messages : 373
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 373
Points : 300
Points : 300
Merci pour ta patience ... Je pense piger le truc, j'ajoute une propriété à chaque objet pour pouvoir la récupérer le moment venu en utilisant l'objet courant this.

Je fais :
Code :
1
2
3
4
5
6
7
$(function(){	
	for(i=0; i < aMandatories.length; i++ ) {
		elem = aMandatories[i];
		$("#" + elem).prop('rang', i);	
		$("#" + elem).change(function() { verifLength()} );
	}
});
et dans ma fonction verifLength() :
Code :
1
2
3
4
function verifLength(){
alert($("#cli_nom").prop('rang'));		
alert($(this).prop('rang'));
	}
Le premier alert() me retourne bien le 'rang' de l'élément cli_nom mais malheureusement , le deuxième me retourne toujours undefined . $(this) ne semble pas être défini dans mon context.
__________________
Take it HiSy
hisy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 16h56   #8
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 797
Points : 35 797
Code :
$("#" + elem).change(function() { verifLength($(this))} );
__________________
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 08/08/2011, 17h23   #9
Membre éclairé
 
Avatar de hisy
 
Inscription : novembre 2004
Messages : 373
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 373
Points : 300
Points : 300
Un grand merci

A quelle adresse je fais livrer la boite de chocolat ?
__________________
Take it HiSy
hisy 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 12h41.


 
 
 
 
Partenaires

Hébergement Web