Partage
  • Partager sur Facebook
  • Partager sur Twitter

An invalid form control is not focusable

peut-on "catcher" l'erreur ?

Sujet résolu
    12 décembre 2014 à 16:32:12

    Bonjour,

    j'ai un formulaire avec des onglets et certains champs required.

    Lors qu'un des champs requis n'est pas renseigné et qu'il n'est pas visible (car sur un autre onglet par exemple) et que je valide le formulaire j'ai cette erreur.

    An invalid form control with name='MonFormulaire[titre]' is not focusable

    Y-a-t'il un moyen de catcher cette erreur et d'exécuter une fonction javascript ?

    Sinon en considérant que je gère manuellement tous les contrôles (à la place du required de HTML5), que me conseillerez vous comme solutions déjà existante ?

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      16 décembre 2014 à 13:22:07

      Bonjour.

      Les attributs "hidden" et "required" sont incompatibles !!!

      Comment voulez-vous qu'un champ "requis" soit rempli, si on ne peut pas y accéder ?... Non ?...

      • Partager sur Facebook
      • Partager sur Twitter
        16 décembre 2014 à 13:50:25

        http://stackoverflow.com/questions/7168645/invalid-form-control-only-in-google-chrome

        Solution : retirer l'attribut required lorsque le champ n'est pas affiché

        • Partager sur Facebook
        • Partager sur Twitter
          16 décembre 2014 à 14:01:08

          Salut,

          oui c'est ce que je fais en attenant de trouver une solution convenable (j'espérais qu'on puisse faire autrement), d'où ma deuxième question :

          Sinon en considérant que je gère manuellement tous les contrôles (à la place du required de HTML5), que me conseillerez vous comme solutions déjà existante ?

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            16 décembre 2014 à 15:03:44

            Bonjour.

            L'autre solution, c'est de retirer l'attribut "hidden" !...

            L'un ou l'autre mais pas les deux, ils sont incompatibles !!!

            Ou alors, vous conservez "hidden", mais vous forcez via JS une "value" pour ce champ caché...

            -
            Edité par Anonyme 16 décembre 2014 à 15:50:39

            • Partager sur Facebook
            • Partager sur Twitter
              16 décembre 2014 à 16:12:36

              Ils ne sont pas en hidden ses champs, c'est juste qu'ils ne sont pas visibles
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                16 décembre 2014 à 17:57:47

                Ah bon !... Pas compris alors... (hélas, je n'ai pas de boule de cristal)

                -
                Edité par Anonyme 16 décembre 2014 à 17:59:45

                • Partager sur Facebook
                • Partager sur Twitter
                  16 décembre 2014 à 18:15:38

                  Salut,

                  Si ce que tu appelles "gérer manuellement tous les contrôles" c'est capturer le onsubmit du formulaire et vérifier que les champs sont remplis au formats attendus, tu n'as qu'à virer tous les required et vérifier que le champ est rempli en même temps que les autres contrôles.

                  Si au cours de cette vérification, tu tombes sur un champ vide qui ne devrait pas l'être (vide, s'entend), tu annules le submit (event.preventDefault() ou return false) après avoir éventuellement fait apparaître le champ en question et un petit message indiquant qu'il ne peut être vide.

                  -
                  Edité par a5er 16 décembre 2014 à 22:23:31

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 décembre 2014 à 19:00:09

                    Ok merci pour vos réponses, 

                    le required n'est pas donc utilisable lorsque l'on veut  créer des interfaces élaborées.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 octobre 2017 à 13:57:48

                      Je pose moi aussi ma solution sur ce sujet, pour les arrivants qui sont le même problème,

                      j'utilise Symfony est j'ai me suis retrouver avec le même problème j'arrive pas a valider le formulaire.

                      du coup j'étais obliger de forcer la validation du formulaire en rajoutant attribut novalidate  du html5, genre comme ceci :

                      <form action="lien_de_la_page" method="POST" novalidate>
                        // mes champs du formulaire
                      </form>
                      

                      et en faisant le submit je me retrouve avec l'erreur qui bloquer la validation en gros le navigateur block tout les champs qui sont en attribut required même si il sont cacher dans la page ( c'est la vraiment là qui venais mon problème) j'avais en champs que j'ai cacher puisque mon Template était hériter à partir d'un autre ;) et je voulais pas l'afficher pour lui.

                      Donc pour conclure vérifier pas que vous avez des champs required qui sont cacher dans la page.

                      Et voila ! j’espère que j'étais assez claire.
                       

                      -
                      Edité par sidi007 20 octobre 2017 à 14:00:06

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 janvier 2020 à 11:45:29

                        Salut,

                        je rebondis sur ce sujet car ce problème peut encore se rencontrer aujourd'hui, avec des éditeurs de textarea comme TinyMCE ou SummerNote.

                        Donc oui, en plaçant le "required" à false, on by-passe le problème.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        An invalid form control is not focusable

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown