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 :

[POO] Double verification de formulaire javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 20
    Par défaut [POO] Double verification de formulaire javascript
    Bonsoir a tous

    j'ai un formulaire sur lequel je verifie si les champs sont vides avec javascript,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function validation(theform){	
     
    	dnf=theform.dateentree
    		if (dnf.value.length == ""){	
    			dnf.focus();
    			alert("saisissez votre date entrée.");
    			return (false);
    		}
    j'aimerai aussi verifier que la date d'entrée ne soit pas superieur a celle de sortie

    avez vous une idée ?

    Merci

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Il existe l'objet Date() en Javascript et il comporte une méthode getTime() qui renvoie le nombre de millisecondes.
    Comparez les millisecondes des deux dates pour obtenir votre vérification.

    Attention, il vous faut récupérer vos valeurs correctement afin qu'elles soient au format Date().

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 20
    Par défaut
    Merci de votre réponse

    cependant, j'ai mis un menu déroulant avec des la balise <option> de façon a ce que les personnes sélectionnent leur date

    il faudrait simplement que le javascript vérfiie que le champ datenetrée soit toujours inferieur a datesortie

    avez vous une solution ?

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Je comprends bien votre soucis. Mais vous pouvez récupérer votre valeur date entrée et vous devez la modifier en Date() Javascript afin de comparer les millisecondes des deux dates.

    L'ennui, c'est que je ne connais pas assez bien cet objet Date(). Je sais qu'il a des méthodes setDate(X), setDay(X), setMonth(X), ... Qui permettent de modifier une partie d'une date. Et pour l'instant, j'aurais tendance à récupérer le jour sélectionné (donc une variable texte) et le setter dans une date quelconque (donc une variable Date), et faire de même pour le mois et l'année, et enfin, faire le getTime pour récupérer les millisecondes.

    Désolé, je n'ai pas d'autre réponse.

  5. #5
    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
    Imaginons que la date soit de la forme jj/mm/aaaa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var date1 = dateEntree.split('/');
    var date2 = dateSortie.split('/');
    var dateDebut = new Date(date1[2], parseInt(date1[1],10)-1, date1[0]);
    var dateFin = new Date(date2[2], parseInt(date2[1],10)-1, date2[0]);
    if(dateDebut > dateFin){
        // La date d'entrée est supérieure à la date de sortie.
    }
    Le "parseInt(date2[1],10)-1" sert à rectifier le mois qui est noté de 0 à 11 en JavaScript et le 10 est TRES important dans parseInt car sinon, un mois entré sous la forme 01 par exemple, ne sera pas transformé en base 10.
    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

  6. #6
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Et bien peut-être que la FAQ peut aider, sait-on jamais!

    edit: grillé, comme d'hab...

  7. #7
    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
    Citation Envoyé par franculo_caoulene Voir le message
    Et bien peut-être que la FAQ peut aider, sait-on jamais!

    edit: grillé, comme d'hab...
    Grillé peut-être, mais ta réponse est préférable à la mienne !
    Il faut effectivement toujours rechercher (FAQ, Forum) avant de poster !
    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

  8. #8
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 20
    Par défaut
    Bonsoir

    merci de vos réponse mais mes dates sont a ce format :

    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
    19
    <select name="datearrivee">
                		<option value="">choissisez un date entree</option>
                                <option value="01 janvier">01 janvier</option>
                                <option value="02 janvier">02 janvier</option>
                                <option value="03 janvier">03 janvier</option>
                                <option value="04 janvier">04 janvier</option>
                                <option value="05 janvier">05 janvier</option>
                                <option value="06 janvier">06 janvier</option>
                         </select>
     
    <select name="datedepart">
                		<option value="">choissisez un date de depart</option>
                                <option value="01 janvier">01 janvier</option>
                                <option value="02 janvier">02 janvier</option>
                                <option value="03 janvier">03 janvier</option>
                                <option value="04 janvier">04 janvier</option>
                                <option value="05 janvier">05 janvier</option>
                                <option value="06 janvier">06 janvier</option>
                         </select>

    la seule qui fonctionne c'est en mettant le javascript suivant mais c'est uniquement si une date de depart est identique a celle d'arrivée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dnf=theform.datedepart
    		if (dnf.value.datearrivee == dnf.value.datedepart){	
    			dnf.focus();
    			alert("Merci de modifier votre date.");
    			return (false);
    		}
    je n'arrive pas a mettre la condition si date arrivée > date depart , merci de modifier votre date d'arrivée.

    des idées ?

  9. #9
    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
    Ben si les dates sont les mêmes dans tes deux combos, tu testes sur le selectedIndex.
    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

  10. #10
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 20
    Par défaut
    Bonsoir,

    merci pour le selectedindex, je l'ai intégré dans mon javascript mais il ne fonctionne pas.. je l'ai sans doute mal rédigé, voici le code de mon javacsript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	dnf=theform.elements
    		if (theform.elements['datedepart'].options[theform.elements['datedepart'].selectedIndex].value < theform.elements['datearrivee'].options[theform.elements['datearrivee'].selectedIndex].value){	
    			dnf.focus();
    			alert("la date de votre arrivée ne peut pas etre avant la date de votre depart.");
    			return (false);
    		}
    j'essaie tant bien que mal, j'avoue etre dépassé, mais je persiste alors si vous avez de quoi m'aiguiller, je suis a votre écoute

    merci d'avance aux personnes qui me répondent car c'est par moment décourageant de passer du temps sur des choses que l'on ne comprend pas..

    Romann76

  11. #11
    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
    Citation Envoyé par Bovino Voir le message
    Ben si les dates sont les mêmes dans tes deux combos, tu testes sur le selectedIndex.
    Pas le value du selectedIndex...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (theform.elements['datedepart'].selectedIndex < theform.elements['datearrivee'].selectedIndex)
    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

  12. #12
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Re bonjour,

    Essayez peut-être ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (document.getElementById("datedepart").selectedIndex < document.getElementById("datearrivee").selectedIndex)
    Je ne sais pas quelle manière du document.getElementById("") ou du theform.elements[""] est la meilleure mais en tout cas il ne faut pas faire le .value lorsqu'on joue avec les selectedIndex.

Discussions similaires

  1. fonction de verification de formulaire javascript
    Par samspitz dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 12/02/2009, 10h55
  2. Boucle JavaScript pour verif de formulaire
    Par VooDooNet dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 19/09/2006, 17h34
  3. Formulaire + javascript + W3C
    Par v4np13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/01/2006, 17h08
  4. [POO] Vérification d'un formulaire avant envoi
    Par KibitO dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/11/2005, 13h55
  5. Réponses: 4
    Dernier message: 28/07/2004, 10h42

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