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 :

Empecher la validation d'un formulaire via la méthode focus() d'un champs


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut Empecher la validation d'un formulaire via la méthode focus() d'un champs
    Bonjour,

    je voudrais savoir s'il est possible d'empêcher le clique sur un lien via la méthode focus d'un champs.

    Je m'explique. J'ai un champs de type date. J'ai un contrôle javascript qui verifie le format de la date et qui remet le focus sur le champs tant que la date saisie n'est pas au bon format.
    Hors malgré ce contrôle, je n'arrive pas à empêcher le clique sur un lien.
    Est ce que c'est le javascript n'est pas suffisamment rapide pour empêcher le clique sur le lien ou est ce que je m'y prend mal?

    PS: je n'ai pas la possibilité de faire un contrôle coté serveur pour des raisons techniques.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    au pire, ne fais apparaître ton lien que quand le champ est valide;

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Citation Envoyé par javatwister Voir le message
    au pire, ne fais apparaître ton lien que quand le champ est valide;

    Si ca n'avait été que moi je l'aurais surement fait.

    Mais ce n'est pas possible.

    Mon formulaire fait partie d'un wizzard. Donc d'un formulaire sur plusieurs pages.
    Pour aller à la page suivante il y a un controle.
    Mais ce controle ne peut pas etre utilisé pour le retour arriere (pour des raisons politiques).
    La seul possibilité qu'on me laisser c'est d'empêcher le focus de quitter le champs si celui-ci n'est pas valide. Est ce qu'il y a un moyen de le faire?

  4. #4
    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
    Ce n'est pas dans la partie "onfocus" du champ date que tu dois placer un controle ici : plutot sur le "onclick" du lien à activer/désactiver. Il faut conditionner le retour de la fonction sur la validité des données de ton champ date. Pour décomposer les choses en deux étapes, tu peux faire ça :

    1) dans le "onchange" du champ date, tu as un controle qui positionne une variable globale avec un booléen. Exemple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <head>
      ...
      ...
      <script type="text/javascript">
        var okDate = false;
        document.body.onload = function () {
          document.getElementById("idDuChampDate").onchange = function testDate() {
            okDate = (this.value.indexOf("2010") > -1);
            // exemple si tu ne voulais que les dates contenant cette chaine,
            //mais c'est a adapter a ta logique de validation bien entendu
          };
        };
      </script>
    </head>

    2) dans le "onclick" du lien tu testes la valeur de ce "flag" pour autoriser l'activation du lien. Ca consisterait à ajouter dans l'exemple précédent :
    Code html : 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
    <head>
      ...
      ...
      <script type="text/javascript">
        var okDate = false;
        document.body.onload = function () {
          document.getElementById("idDuChampDate").onchange = function testDate() {
            okDate = (this.value.indexOf("2010") > -1);
            // exemple si tu ne voulais que les dates contenant cette chaine,
            //mais c'est a adapter a ta logique de validation bien entendu
          };
            
          document.getElementById("idDuLien").onclick = function () {return okDate;};
    
        };
      </script>
    </head>
    

    <rengaine type="vieille">Mais quoi qu'il en soit, rappelle-toi qu'un controle JS n'aura d'effet que sur les visiteurs l'ayant laissé activé. C'est une majorité des internautes, mais pas la totalité ^^ (donc ce n'est pas une sécurité mais un supplément d'ergonomie)</rengaine>

    (pour ne pas compliquer l'exemple j'ai tout balancé en vrac dans une balise script du head et c'est mal Pour bien faire il aurait fallu faire dans le head un link vers un JS externe ^^ en plus, ce code écrasera d'éventuelles autres fonctions préexistantes pour ces événements, donc il faudrait plutot faire de l'addEventListener/attachEvent... mais bref elles vont se taire les p'tites voix ? )

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    bon c'est ce que je voulais savoir. Pour controler le champs je vais mettre un controle sur le bonton qui permet de changer de page.

    Merci à tous pour votre aide.

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

Discussions similaires

  1. [AC-2010] ouvrir un formulaire sur reception du focus sur un champs texte
    Par bambi12047 dans le forum VBA Access
    Réponses: 4
    Dernier message: 11/04/2012, 13h54
  2. [MVC] Validation d'un formulaire via JQuery
    Par FunkyBreizh dans le forum Spring Web
    Réponses: 0
    Dernier message: 11/05/2010, 16h24
  3. Empecher double validation formulaire
    Par calitom dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/04/2007, 18h24
  4. Empecher la validation d'un formulaire par entrée
    Par Oluha dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 15/09/2006, 13h39
  5. Javascript : Empecher la validation d'un formulaire
    Par otb82 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/01/2006, 09h46

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