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 :

Optimiser validation de formulaire


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut Optimiser validation de formulaire
    Bonjour,

    Grâce à JQUERY, je teste si les champs d'un formulaire sont vides ou non. Si un des champs est vide, j'affiche un message d'erreur. Si tous les champs sont bien remplis, la soumission du formulaire se fait :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    $(function(){
     
    var valid_submit_achat;
    valid_submit_achat = true;
     
    var valid_submit_lec;
    valid_submit_lec = true;
     
     
    	$('form[name="export"]').submit(function(event) {
     
    	// vérifie si le champ date achat n'est pas vide	
            if($("#dateachat_insert").val()==""){
     
    	   valid_submit_achat= false;
     
     
    	   $("#dateachat_insert").next(".erreur").show().text
               ("Entrer une date d'achat");
     
    	   event.preventDefault();
     
            }
     
     
    	else
    	{
    	   valid_submit_achat = true;
     
    	   $("#dateachat_insert").next(".erreur").hide();
     
    	}
     
     
            // vérifie si le champ date de lecture n'est pas vide
            if($("#datelecture_insert").val()==""){
     
    	   valid_submit_lec= false;	
     
     
     
    	   $("#datelecture_insert").next(".erreur").show().text
               ("Entrer une date de lecture");
     
    	   event.preventDefault();
     
            }
     
     
    	else
    	{
    	   valid_submit_lec = true;
     
    	   $("#datelecture_insert").next(".erreur").hide();
     
    	}
     
     
    if (valid_submit_achat == false ||  valid_submit_lec == false ) 
    {
     
          alert('Le formulaire est incomplet')
     
    }	
     
     
    	});//FIN form SUBMIT
     
     
    });//fin ready
    Ce code fonctionne mais il est certainement optimisable. En effet, je crée pour chaque champ une variable permettant de tester s'il est vide ou rempli (valid_submit_achat et var valid_submit_lec). A la fin du code je teste si une des variables vaut false. N'y a-t-il pas moyen d'utiliser une seule variable de test pour tous les champs ? Peut-être en passant par un tableau ? Qu'en pensez-vous ? 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
    Tu peux écrire une fonction intermédiaire pour commencer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $('form[name="export"]').submit(function(event) {
      if (isFormComplete(this) == false){
        event.preventDefault();      
        alert('Le formulaire est incomplet')      
      }
    });
    et mettre tes tests dans la fonction isFormComplete, avec des return false anticipés si un champ est vide.

    Autre solution en HTML5 pour les navigateurs compatibles, utiliser l'attribut pattern sur tes input : http://caniuse.com/#search=form%20validation

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Sylvain, en l’occurrence, ce serait plutôt l'attribut required

    Sinon, tu peux aussi utiliser une classe au lieu d'id. Si on prend la classe notEmpty par exemple, ça pourrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $('form[name="export"]').submit(function(event) {
        var isOK = true;
        $('.notEmpty').each(function(){
            if(this.value == ''){
                isOK = false;
                return false;  // permet de sortir de la boucle : si un champ est vide, pas besoin d'aller plus loin
            }
            if(!isOK){
                    event.preventDefault();
            }
        }
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut
    Merci à vous deux. Vos propositions m'ont permis d'aboutir à l'objectif que je m’étais fixé

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

Discussions similaires

  1. validation du formulaire de la page ouvrante d'un popup
    Par noa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/08/2005, 12h11
  2. Réponses: 5
    Dernier message: 24/05/2005, 11h21
  3. Valider un formulaire contenu dans une iframe
    Par snoopy5.0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 11h14
  4. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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