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 :

Fonction avec condition


Sujet :

jQuery

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut Fonction avec condition
    Bonjour,
    J'aimerais trouver une fonction permettant de dire "si cette fonction retourne "true", alors fais ça". la fonction qui retourne "true" est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var $check = {}
     
    $check['nom'] = $(function() {
    	$nom.keyup(function(){	
    		if(!$nom.val().match(/^[A-Z]([a-z-]*)[a-z]+$/)) {
    			$nom.next(".tooltip").show();
    			return false;
    		} else {
    			$nom.next(".tooltip").hide();
    			return true;
    		}
    	});
    });
    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Cette fonction est un callback, elle est appelée à chaque fois que l'évènement keyup survient (autrement dit à chaque relachement de touche de clavier). Donc ce n'est pas la fonction $check.nom qui renverra true ou false. Qu'est-ce qui t'empêche d'ajouter tes fonctions directement dans le code ?

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    var $check = {}
     
    $check['nom'] = $(function() {
        $nom.keyup(function(){    
            if(!$nom.val().match(/^[A-Z]([a-z-]*)[a-z]+$/)) {
                $nom.next(".tooltip").show();
                return false;
            } else {
                $nom.next(".tooltip").hide();
                faisCa();
                return true;
            }
        });
    });

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut
    Salut,
    merci pour ta réponse, ce qui m'embête dans le fait de mettre directement a l'intérieur de la fonction est qu'en fait j'ai pas mal de $chek[''].
    Mais si je ne trouve pas autre chose, je prendrais ta méthode.

  4. #4
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut
    Salut,

    En fait je pense qu'il me faudrait un équivalent de cette fonction en JQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var inputs = document.querySelectorAll('input[type=text]'),
    inputsLength = inputs.length;
     
    for (var i = 0 ; i < inputsLength ; i++) {
    inputs[i].addEventListener('keyup', function(e) {
    check[e.target.id](e.target.id);
    }, false);
    }
    Sachant le code de $check que j'ai écris plus haut.

    Merci.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Cela donne le code ci-dessous, inutile puisqu'il s'agit du même événement "keyup" que celui qui donne sa valeur à $check[ event.target.id ].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $( "input[type='text']" ).on( "keyup", function( event ){
        console.log( $check[ event.target.id ] );
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut
    Merci pour ta réponse. Malheureusement, j'avais mal identifié le problème.
    En fait, je me retrouve avec un formulaire qui, au fur et à mesure que j'écris dans le formulaire ne fait rien. La fonction ne s'exécute qu'une seule fois au début ; car si je remplis bien le formulaire et que j'actualise la page, les messages d'erreur disparaissent... Je ne sais pas exactement d'où ça vient.
    J'ai essayé ça comme code et aucun n'a fonctionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $(function() {
     
    	$( "input[type='text']" ).on( "keyup", function( event ){
    		console.log( $check[ event.target.id ] );
    		});      
    })();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $(function() {
     
    	$inputs.each(function(){
    		$( "input[type='text']" ).on( "keyup", function( event ){
    			console.log( $check[ event.target.id ] );
    		});    
    	})
     
    })();

  7. #7
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut
    Ok, j'ai fini par trouver... il fallait juste mettre la fonction $('input:text').keyup(function(){ au tout début du code. Bon maintenant, il me reste à voir pour l'AJAX. Merci pour vos réponses

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

Discussions similaires

  1. Tracer une fonction avec conditions sur variable
    Par Leonpolou dans le forum MATLAB
    Réponses: 16
    Dernier message: 23/10/2009, 17h53
  2. Réponses: 1
    Dernier message: 14/08/2009, 12h19
  3. Réponses: 4
    Dernier message: 14/04/2008, 11h00
  4. fonction "REPLACE" avec condition
    Par emilek dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/03/2007, 17h08
  5. [Oracle 10] Fonction ROWNUM avec condition
    Par SQL_Pour_les_Nuls dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/07/2006, 15h06

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