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 :

Empêcher la validation d'un formulaire si champs à vide


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut Empêcher la validation d'un formulaire si champs à vide
    Bonjour !

    je fais actuellement du J2EE et j'envois mes formulaires en les passant dans "une moulinette" appartenant à un plugin appelé "Validator" qui fonctionne côté client (JS) et/ou côté serveur (J2EE) ... très connu par les J2EEistes !

    Tous mes contrôles fonctionnent parfaitement, sauf un seul type de contrôle que je ne peux mettre en oeuvre : j'ai 4 champs et soit les 2 premiers sont obligatoires, soit ce sont les 2 derniers ! Donc un coup un champ est obligatoire et dans l'autre cas il doit rester à vide ...

    Oui oui ça correspond à 2 formulaires en 1 !


    Bref bref, je voudrais savoir comment empêcher l'envoi de mon formulaire sachant que l'envoi se fait en JS ... démonstration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:form action="/FormCompareX" onsubmit="return validateFormCompareX(this);">
    J'ai bien essayé comme ça :
    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
    16
    17
    18
    19
    20
    		<script type="text/javascript">
    			function ctrlChamps() {
    				var champ1 = document.formCompareX.xFab1.value;
    				var champ2 = document.formCompareX.xFab2.value;
    				var champ3 = document.formCompareX.xSav1.value;
    				var champ4 = document.formCompareX.xSav2.value;
     
    				if ((champ1 == "") && (champ2 == "") && (champ3 == "") && (champ4 == "")) {
    					alert("Merci de compléter correctement le formulaire.");
    					return false;
    				}
    				else {
    					return validateFormCompareX(this);
    				}
    			}
    		</script>
     
    [...]
     
    <html:form action="/FormCompareFdm" onsubmit="ctrlChamps();">

    Ca ne fonctionne pas : il m'affiche la popup, ... poste les données de mon formulaire et tombe en échec !

    Personne n'a une idée ?
    Quand on n'a pas d'tête, on a ...

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Ex stagiaire ... rest ele encore un peu tu n'es pas prêt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="return validateFormCompareX(this);">
    faudrait peut être l'appeler la fonction de verif non ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="return ctrlChamps();">
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else {
    					return true;
    				}
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Mouais ... et avec ton code ... quand est-ce que j'appelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    validateFormCompareX(this)
    ?

    Edit : à lire trop vite on comprend pas tout ... je l'appelle ma fonction "ctrlChamps()" à la fin de mon 2nd script !
    Quand on n'a pas d'tête, on a ...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    elle est ou ta fonction
    ????
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Aaaah celle là ...

    Elle est générée automatiquement dans ma page JSP finale !

    Au final, j'ai modifié mes scripts et ça fonctionne :
    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
    16
    17
    18
    19
    		<script type="text/javascript">
    			function ctrlChamps() {
    				var champ1 = document.formCompareX.xFab1.value;
    				var champ2 = document.formCompareX.xFab2.value;
    				var champ3 = document.formCompareX.xSav1.value;
    				var champ4 = document.formCompareX.xSav2.value;
     
    				if ((champ1 == "") && (champ2 == "") && (champ3 == "") && (champ4 == "")) {
    					alert("Merci de compléter correctement le formulaire.");
    					return false;
    				}
    				else {
    					return true;
    				}
    			}
     
    [...]
     
    <html:form action="/FormCompareX" onsubmit="return ctrlChamps(); return validateFormCompareX(this);">

    Gôm
    Quand on n'a pas d'tête, on a ...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    oui même si dans une utilisation correcte de soumission de form avec on submit il faudrait faire ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:form action="javascript:validateFormCompareX(this)" onsubmit="ctrlChamps();">
    mais du coup je sais pas à quoi sert ton
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Tu as effectivement raison ... je t'explique !

    La balise Action contient le code qui me permet d'exécuter le pourquoi du comment de mon formulaire, c'est donc une servlet (pour faire simple) qui se cache derrière.

    La balise onSubmit me permet de lancer une validation plus ou moins automatique (côté client et/ou côté serveur) des champs de mon formulaire grâce au plugin "Validator" dont je parlais auparavant. Enfin, sauf dans le cas (particulier) où tous mes champs sont vides !

    En fait, si le JS est désactivé : le plugin utilise des scripts côté Serveur permettant de réaliser malgré tout la validation et éviter un plantage !

    Pour finir, une fois le process de validation passé, il se débrouille pour faire "une redirection" vers la balise Action afin d'exécuter effectivement le code permettant l'interprétation des données de mon formulaire.
    Quand on n'a pas d'tête, on a ...

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    et donc le onsubmit avec le return de la validation avant de lancer ta seconde fonction est la solution ...
    Je comprends mieux comme ça
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par SpaceFrog
    et donc le onsubmit avec le return de la validation avant de lancer ta seconde fonction est la solution ...
    Je comprends mieux comme ça
    Exactement !

    PS : entre-temps j'ai édité mon post ... pour que ce soit plus claire !
    Quand on n'a pas d'tête, on a ...

  10. #10
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par SpaceFrog
    et donc le onsubmit avec le return de la validation avant de lancer ta seconde fonction est la solution ...
    Donc c'est bon je peux arrêter les stages ?


    Gôm
    Quand on n'a pas d'tête, on a ...

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

Discussions similaires

  1. [UI] jquery-validate : Envoi du formulaire et champ required vide
    Par antrax2013 dans le forum jQuery
    Réponses: 4
    Dernier message: 19/03/2014, 10h51
  2. Réponses: 3
    Dernier message: 16/04/2010, 10h44
  3. [MySQL] Formulaire de champ vide avec mysql_real_escape_string()
    Par Seta-san dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/02/2008, 17h27
  4. ouverture formulaire avec champ vide
    Par atlantideD dans le forum IHM
    Réponses: 3
    Dernier message: 16/05/2007, 12h36
  5. [ODBC] Valider formulaire avec champs vides
    Par dorot dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 12/07/2006, 17h15

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