IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

classes en Javascript.


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par d�faut classes en Javascript.
    Bonjour � vous, en lisant un peu sur le web sur les classes en Javascript, j'ai r�ussi � bidouiller un validateur de formulaire int�ressant, mais quelque chose m'�chappe :

    J'ai deux instance d'une m�me classe d�clar�e avec des param�tres propres � chacune (nom, etc.)

    Le probl�me est que lorsque je veux r�cup�rer (code interne de la classe)la propri�t� nom de mon objet il me donnera toujours le nom de la derni�re instance cr��e

    Par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    var test1 = new FormValidation('test1');
    var test2 = new FormValidation('test2');
    Dans le code je fait une alerte et 'test2' est toujours affich� m�me si je suis sur l'objet test1

    Je dois mal m'y prendre....et j'utilise prototype avec aussi du jquery dans la classe

    Merci de votre aide

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par d�faut
    Citation Envoy� par kaptnkill Voir le message
    Bonjour � vous, en lisant un peu sur le web sur les classes en Javascript, j'ai r�ussi � bidouiller un validateur de formulaire int�ressant, mais quelque chose m'�chappe :

    J'ai deux instance d'une m�me classe d�clar�e avec des param�tres propres � chacune (nom, etc.)

    Le probl�me est que lorsque je veux r�cup�rer (code interne de la classe)la propri�t� nom de mon objet il me donnera toujours le nom de la derni�re instance cr��e

    Par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    var test1 = new FormValidation('test1');
    var test2 = new FormValidation('test2');
    Dans le code je fait une alerte et 'test2' est toujours affich� m�me si je suis sur l'objet test1

    Je dois mal m'y prendre....et j'utilise prototype avec aussi du jquery dans la classe

    Merci de votre aide
    Et si tu nous donnais le code de FormValidation ?

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par d�faut
    Ouais j'y ai pens�...il est vraiment long...donc je l'ai r�duit un peu
    Voici le constructeur:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    FormValidation = function(formName, required, absolutePositioning, verbose){
    	this._formName = formName;
    	this._required = (required != undefined)? required : "";
    	this._required = this._required.split("|");
    	this._absolutePositioning = (absolutePositioning != undefined)? absolutePositioning : true;
    	this._verbose = (verbose != undefined) ? verbose : false;
    	this.setUpValidation(this);
    	this.getRequired = function(){
    		alert('REQUIS ' + this._required );
    	}
    }
    Voici la fonction appel�e � l'interne qui me donne toujours la valeur de la derni�re instance cr��e :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    FormValidation.prototype.checkSubmit = function(form, required, checkOnly){
    	this.getRequired(); //donne moi la bonne valeur de la variable!!!
            //selon l'exemple cela donne toujours 'test2'..... (aussi avec this._required)
    }
    Et voici comment j'ajoute l'appel de cette fonction sur un submit :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    FormValidation.prototype.setUpValidation = function(e) {
    	$scope = e;
    	$(form).submit(function(){
    		return  $scope.checkSubmit($(form),this._required); 	//this._required est ok à cet endroit, mais pas dans la fonction checkSubmit	   
    	})
    }
    J'ai v�rifi� et de l'externe, la variable this._required est la bonne, mais de l'interne elle garde la derni�re valeur? Pourtant dans le code suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    $(form).submit(function(){				
    	return $scope.checkSubmit($(form),$required); 			   	   
    })
    ...c'est le bon formulaire qui est pass�, j'ai bien v�rifi�...

    Merci

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    D�cembre 2010
    Messages
    1 009
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : sans emploi

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 1 009
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    FormValidation.prototype.setUpValidation = function(e) {
    	$scope = e;
    	$(form).submit(function(){
    		return  $scope.checkSubmit($(form),this._required); 	//this._required est ok à cet endroit, mais pas dans la fonction checkSubmit	   
    	})
    }
    sans certitude (n'�tant pas tr�s familier du jQuery), je dirai que ton erreur se situe l�, lorsque tu �xecutes cette fonction, �a rajoute le e.checkSubmit au "onsubmit" de tous tes "form" avec le m�me et unique "e" qui deviendra le "this" dans checkSubmit. (donc un seul et unique objet formvalidation)

    edit: je ne suis pas s�r de comprendre ton code, si tu pouvais d�j� nous en dire plus sur la nature du param�tre "e" pass� � cette fonction. sinon je te proposerai � froid de tester :
    Code js : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    FormValidation.prototype.setUpValidation = function(e) {
            var $scope = this;
    	$(form).submit(function(){
    		return  $scope.checkSubmit(e,this._required); 	//this._required est ok à cet endroit, mais pas dans la fonction checkSubmit	   
    	})
    }

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POO�te
    Inscrit en
    Avril 2008
    Messages
    2 652
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : POO�te

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par d�faut
    Citation Envoy� par kaptnkill Voir le message
    Bonjour � vous, en lisant un peu sur le web sur les classes en Javascript, ...
    Int�ressant
    En revanche, �a n'existe pas.

    Bon, j'imagine de quoi tu veux parler : le proc�d� consistant � mettre en place, en JS, les m�canismes classiques des langages objet "� classes".

    Mais permets-moi de te poser cette question (enfin, ce n'est pas pour moi, plut�t pour te donner l'occasion de te la poser toi-m�me ^^) :

    >>> pour quoi faire ?

    JS est un langage objet "� prototype", ce qui est un paradigme � part enti�re, avec ses avantages et ses inconv�nients. Est-il pertinent de choisir un outil pour ensuite le tordre afin de le faire rentrer dans un moule inadapt� ? Si on veut inverser l'exemple, que penser d'un projet en .NET dans lequel on aurait reconstruit tout le principe des langages � prototype... ? Personnellement je n'en vois pas l'utilit� imm�diate.

    En dehors de ces consid�rations toutes th�oriques, un d�tail en passant : pour initialiser les valeurs de ton objet, tu peux passer par cette syntaxe plus l�g�re et plus lisible � la fois, bas�e sur l'op�rateur "||" :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    this._required = required || "";

  6. #6
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Je dois mal m'y prendre....
    Oui, il semblerait
    et j'utilise prototype avec aussi du jquery dans la classe
    Je pense qu'un d�but de r�ponse est cach� dans cette phrase...
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, 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
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  7. #7
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POO�te
    Inscrit en
    Avril 2008
    Messages
    2 652
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : POO�te

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par d�faut
    Citation Envoy� par Bovino Voir le message
    Oui, il semblerait

    Je pense qu'un d�but de r�ponse est cach� dans cette phrase...
    Citation Envoy� par kaptnkill
    et j'utilise prototype avec aussi du jquery dans la classe
    Il parait qu'en rajoutant mootools et ExtJS �a tourne encore mieux

    /sarcasmes off
    >>> je pense que Bovino �voque la multiplication des librairies comme facteur de confusion et de conflits ^^

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par d�faut
    si tu pouvais d�j� nous en dire plus sur la nature du param�tre "e" pass� � cette fonction
    this.setUpValidation(this); //e = this ... le constructeur

    this._required = required || "";
    Merci j'en prends note...

    Je vois que j'ai enflamm� certaines personne avec mon id�e absurde de vouloir travailler en Javascript avec le principe de classes, sachant bien que le langage Javascript n'est pas un langage orient� objet...

    >>> pour quoi faire ?
    Bien, pour avoir du code un peu plus organis�, si tu as une autre id�e, je suis preneur

    Je pense qu'un d�but de r�ponse est cach� dans cette phrase..
    Ce qui veut dire? :>>> je pense que Bovino �voque la multiplication des librairies comme facteur de confusion et de conflits ^^ Dac! Capt�

    Merci de votre aide

  9. #9
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    D�cembre 2010
    Messages
    1 009
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : sans emploi

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 1 009
    Par d�faut
    Donne-nous toute ta page, ce sera plus simple.

  10. #10
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Citation Envoy� par kaptnkill
    Ce qui veut dire? :>>> je pense que Bovino �voque la multiplication des librairies comme facteur de confusion et de conflits ^^ Dac! Capt�
    Oui... en gros, tu manipules des contextes et des objets assez divers, en particulier les objets jQuery. Donc la perte de r�f�rence ou autres joyeuset�s peuvent apparaitre facilement
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, 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
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par d�faut
    Oui... en gros, tu manipules des contextes et des objets assez divers, en particulier les objets jQuery. Donc la perte de r�f�rence ou autres joyeuset�s peuvent apparaitre facilement
    Ouais, bien je convertit le tout sans JQuery et je vous redonne des nouvelles...c'est dommage, pratique ce JQuery

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par d�faut
    En dehors de ces consid�rations toutes th�oriques, un d�tail en passant : pour initialiser les valeurs de ton objet, tu peux passer par cette syntaxe plus l�g�re et plus lisible � la fois, bas�e sur l'op�rateur "||" :
    Hummm, apr�s quelques test, ce n'est pas concluant si la valeur est == � false...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    this.valeur = valeur || "Rien"
    Si valeur == false, this.valeur sera == � "Rien"

  13. #13
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POO�te
    Inscrit en
    Avril 2008
    Messages
    2 652
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : POO�te

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par d�faut
    Citation Envoy� par kaptnkill Voir le message
    Hummm, apr�s quelques test, ce n'est pas concluant si la valeur est == � false...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    this.valeur = valeur || "Rien"
    Si valeur == false, this.valeur sera == � "Rien"
    Oui, c'est juste, j'aurais d� le pr�ciser ce n'est pas un d�tail ^^'

    Si false est une donn�e valide pour le param�tre, en effet, il faut alourdir un peu la syntaxe pour g�rer le cas.

    Au temps pour moi

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par d�faut Enfin
    Merci � vous tous pour vos conseils, j'ai en effet enlev� le jquery de ma "classe" est tout fonctionne � merveille. J'ai du me confectionner une fonction maison du style des s�lecteurs de jquery, mais c'est tant mieux...j'ai dr�lement appris.

    Merci encore

  15. #15
    Membre �clair�
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    354
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 354
    Par d�faut
    normalement tu peux garder jQuery avec prototype, il faut que renseigne la propri�t� noConflict

  16. #16
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POO�te
    Inscrit en
    Avril 2008
    Messages
    2 652
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : POO�te

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par d�faut
    Citation Envoy� par kimjoa Voir le message
    normalement tu peux garder jQuery avec prototype, il faut que renseigne la propri�t� noConflict
    Dans la mesure o� il a r�ussi � �purer son site d'une librairie surnum�raire, je vois mal l'utilit� de lui conseiller de faire machine arri�re... ou bien pour le plaisir de l'usine � gaz ?

  17. #17
    Membre �clair�
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    354
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 354
    Par d�faut
    A titre informatif tout simplement ....

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [JavaScript] Changer le style de tous les �l�ments d'une m�me classe en javascript
    Par dragonno dans le forum Contribuez
    R�ponses: 1
    Dernier message: 12/10/2018, 19h09
  2. Faire des classes en Javascript
    Par penguin50 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 25/06/2008, 14h08
  3. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    R�ponses: 2
    Dernier message: 13/02/2006, 14h50
  4. [POO] Question class php=>javascript
    Par jeff_! dans le forum Langage
    R�ponses: 4
    Dernier message: 05/01/2006, 15h10
  5. [JavaScript] Changer la class CSS via l'id
    Par Romalafrite dans le forum Mise en page CSS
    R�ponses: 1
    Dernier message: 25/11/2005, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo