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 07/02/2011, 17h36   #1
Invité de passage
 
Julien
Inscription : mai 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Julien

Informations forums :
Inscription : mai 2010
Messages : 20
Points : 3
Points : 3
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 :
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 :
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
Juli3ns est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 09h49   #2
Membre éclairé
 
sébastien courjean
Inscription : novembre 2010
Messages : 204
Détails du profil
Informations personnelles :
Nom : sébastien courjean
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : novembre 2010
Messages : 204
Points : 319
Points : 319
Personnellement, j'aurais regroupé en ceci :

Code :
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);
  });
});
__________________
Sébastien Courjean
Développeur Web
scourjean@cyres.fr
http://www.cyres.fr/
scourjean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 10h36   #3
Invité de passage
 
Julien
Inscription : mai 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Julien

Informations forums :
Inscription : mai 2010
Messages : 20
Points : 3
Points : 3
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 :
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));
});
Juli3ns est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 12h51   #4
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Bonjour,

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

Code :
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 :
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
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 18h42   #5
Invité de passage
 
Julien
Inscription : mai 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Julien

Informations forums :
Inscription : mai 2010
Messages : 20
Points : 3
Points : 3
Merci pour vos réponses ! J'aurais appris a utiliser la virgule
Juli3ns 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 07h41.


 
 
 
 
Partenaires

Hébergement Web