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

jQuery Discussion :

Refactorisation possible ?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Par défaut Refactorisation possible ?
    Salut à tous,

    Une question bête et certainement très simple, j'ai trouvé un petit script sur le net, mais j'ai préféré le personnaliser un peu. Par exemple, celui-ci ne s'applique qu'aux input de type text et j'aimerais aussi l'appliquer au input de type password.

    Pour ne pas trop me répéter dans mon code, j'ai déporter le corps des fonctions dans de nouvelles fonctions, j'arrive finalement à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    $(document).ready(function() {
      $('input[type="text"]').focus(function() {
        form_focus(this);
      });
      $('input[type="text"]').blur(function() {  
        form_blur(this);
      });
      $('input[type="password"]').focus(function() {
        form_focus(this);
      });
      $('input[type="password"]').blur(function() {  
        form_blur(this);
      });
    });
     
    function form_focus(input) {
      if (input.value == input.defaultValue){
        input.value = '';
      }
    }
     
    function form_blur(input) {
      if ($.trim(input.value) == ''){
        input.value = (input.defaultValue ? input.defaultValue : '');
      }
    }
    Mon code semble fonctionner mais cepandant je me demande si je ne peux pas directement appeler mes fonctions "form_focus" et "form_blur" directement en paramètre de blur ou focus. J'ai essayé le code suivant mais il ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $(document).ready(function() {
     $('input[type="text"]').focus(form_focus(this)); 
     $('input[type="text"]').blur(form_focus(this));
     $('input[type="password"]').focus(form_focus(this)); 
     $('input[type="password"]').blur(form_focus(this));
    });
     
    function form_focus(input) {
      if (input.value == input.defaultValue){
        input.value = '';
      }
    }
     
    function form_blur(input) {
      if ($.trim(input.value) == ''){
        input.value = (input.defaultValue ? input.defaultValue : '');
      }
    }
    Voilà finalement je m'aperçois que je ne sais pas vraiment utiliser le mot clé this, si vous pouvez m'éclairer un peu et me dire si il est possible de refactoriser mon code ? Je suis aussi ouvert à tout commentaires, critiques, suggestions...

    Merci à tous de m'avoir lu

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Personnellement, j'aurais regroupé en ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(document).ready(function() {
      $('input[type="text"],input[type="password"]').focus(function() {
        form_focus(this);
      });
      $('input[type="text"],input[type="password"]').blur(function() {  
        form_blur(this);
      });
    });

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Par défaut
    Merci pour ta réponse, je ne connaissais pas l'utilisation de la virgule. Est-il possible d'appeler la fonction directement en paramètre de blur ou de focus pour arriver à un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $(document).ready(function() {
      $('input[type="text"],input[type="password"]').focus(form_focus(this));
      $('input[type="text"],input[type="password"]').blur(form_blur(this));
    });

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bonjour,

    Suffit juste de rajouter une fonction anonyme au niveau du callback de focus & blur et le tour est joué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $(document).ready(function() {
      $('input[type="text"],input[type="password"]').focus(function() { form_focus(this) });
      $('input[type="text"],input[type="password"]').blur(function() { form_blur(this) });
    });
    Voire même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    $(document).ready(function() {
      $('input[type="text"],input[type="password"]').bind("focus blur", function(event) {
        if(event.type == "focus")
          form_focus(this);
        else
          form_blur(this);
      });
    });
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Par défaut
    Merci pour vos réponses ! J'aurais appris a utiliser la virgule

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [D7][TreeView/ListView] Combien d'items possibles ?
    Par phplive dans le forum Composants VCL
    Réponses: 6
    Dernier message: 09/04/2003, 22h40
  2. Application 'classique' possible en java ?
    Par jeanphy dans le forum JBuilder
    Réponses: 3
    Dernier message: 26/03/2003, 22h24
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22
  5. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 07h38

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