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 :

Stopper une action dans un événement


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut Stopper une action dans un événement
    Bonjour

    Je m'essaye à js + jQuery depuis quelques jours et en tant que nouvel utilisateur, j'espère un peu d'indulgence de votre part si je pose des questions peu pertinentes aux habitués que vous êtes.

    J'ai 2 "input" texte A et B sur ma page.
    Quand l'utilisateur appuie sur entrée ou tabulation sur le A, le focus passe au B (logique jusque là).
    Je voudrais "annuler" le passage à B si A n'est pas rempli.
    J'ai trouvé pour ça focusout ou blur et j'ai essayé plusieurs solutions piochées sur le net mais ne fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        $("#target").blur(function (event) {
            var s = ($(this).val()).trim();
            alert(s);  // pour vérifier que je passe bien ici
     
            if( s === '' ){            
                alert('vide');  // pour vérifier que je passe bien ici
                setTimeout(event.stopImmediatePropagation(), 1);
                return false;            
            };
        });
    En fait, je ne sais pas si ce que je veux faire est possible.
    Donc,est-ce que je dois chercher encore ou bien ma recherche est-elle vaine et se terminera forcément sur une impossibilité ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ici, aucune pitié... (non, je rigole... )

    1- Le code JS n'a d'intérêt qu'AVEC le code HTML associé.

    2- Quand on débute, on EVITE de réinventer la roue, ou de "bricoler" des trucs farfelus.
    DONC : on commence par des exercices CLASSIQUES, et simples !

    3- Déjà, on va attendre que le DOM soit prêt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(function(){ // équivalent à $(document).ready(function() {
     
       // ... (ici, le script)
     
    });

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    Bonjour,
    il me semble souhaitable de changer ton approche, que se passe t-il si l'on quitte l'<input> A sans rien saisir ... on ne peut plus rien faire !

    Je verrais plus quelque chose comme, quand l'<input> B prend le focus alors on teste si l'<input> A est vide et si c'est le cas on lui donne le focus.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    il me semble souhaitable de changer ton approche, que se passe t-il si l'on quitte l'<input> A sans rien saisir ... on ne peut plus rien faire !

    Je verrais plus quelque chose comme, quand l'<input> B prend le focus alors on teste si l'<input> A est vide et si c'est le cas on lui donne le focus.
    Dans le sens inverse, j'aurais dû y penser.
    Je précise que j'en suis à faire des essais au fil de ma curiosité en vue d'apprendre, et que le but final n'est pas de faire un site (en tous cas pour le moment).
    Donc, cette solution sera retenue, même si mon besoin de connaissances dans ce domaine ne m’empêchera pas de savoir si ma question originale peut avoir une réponse

    Merci pour l'idée qui me servira forcément un jour.

  5. #5
    Invité
    Invité(e)
    Par défaut
    1- Comme je l'ai dit, le mieux est de commencer avec du "classique".
    Comme :
    • vérifier les données à la soumission du formulaire
    • récupérer la valeur d'un select ou checkbox pour effectuer une action selon condition
    • ...

    Je ne pense pas que vouloir "bloquer le focus" soit très... ergonomique ni recommandé : ça risque surtout d'être "pénible" pour l'utilisateur.


    2- Pour les champs obligatoires, il existe en HTML l'attribut required :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" .... required="required" />
    Il existe ainsi un tas d'autres attributs et types, avant d'envisager un contrôle en JS/jQuery (l'un n'empêchant pas l'autre, évidemment).
    Dernière modification par ProgElecT ; 23/07/2019 à 11h45.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    Citation Envoyé par Papy214
    ... si mon besoin de connaissances dans ce domaine ne m’empêchera pas de savoir si ma question originale peut avoir une réponse
    Outre le fait que tu risques de tourner en rond l'événement blur ne se propage pas donc on ne peut pas stopper la propagation, il vaut mieux dans ce cas utiliser l'événement focusout

    Ressources :


  7. #7
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut
    Bien ... bloquer le focus ne semble pas la solution idéale.

    Je vais donc utiliser la méthode consistant à donner le focus à A sur la prise de focus par B.

    Pour la différence entre blur et focusout, je vais étudier ça de près.

    Merci de vos conseils à tous les deux

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut
    aïe, pas sur la tête

    Oui oui ... j'ai bien mis ce bout de code dans $(document).ready(function () {}
    C'est juste que je ne voulais pas surcharger inutilement le thread.


    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
    $(document).ready(function () {
     
        $("#target").blur(function (event) {
            var s = ($(this).val()).trim();
            alert(s);  // pour vérifier que je passe bien ici
     
            if( s === '' ){            
                alert('vide');  // pour vérifier que je passe bien ici
                setTimeout(event.stopImmediatePropagation(), 1);
                return false;            
            };
        });    
     
     
    });
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            <form>
                <input id="target" type="text" value="Field 1">
                <input type="text" value="Field 2">
            </form>

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/06/2006, 10h05
  2. fermer une fiche dans l'évènement OnActivate
    Par Soulama dans le forum Composants VCL
    Réponses: 7
    Dernier message: 08/03/2006, 14h26
  3. [Struts] Appel d'une action dans une action
    Par cosmos38240 dans le forum Struts 1
    Réponses: 2
    Dernier message: 16/02/2006, 15h52
  4. [Visual C#]Recup une touche dans un évènement MouseDown
    Par Akta3d dans le forum Windows Forms
    Réponses: 8
    Dernier message: 02/12/2005, 17h13
  5. Confirmer une action dans un lien PHP
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 11/10/2005, 19h29

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