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 :

Saisie obligatoire quand un élément est selectionné


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 125
    Points : 51
    Points
    51
    Par défaut Saisie obligatoire quand un élément est selectionné
    Bonjour à tous,

    J'ai deux champs texte :
    DATE et STATUS dont les options sont les suivantes:
    • Awaiting (value=1)
    • Sent (value=2)
    • Paid (value=3)


    Quand STATUS=2, il faut remplir le champ date (obligatoire), avant l'envoi du formulaire.

    Comment faire celà ?

    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
    Points : 9 944
    Points
    9 944
    Par défaut
    STATUS est un select c'est ça ?

    Tu peux faire quelque-chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    document.getElementById("status").onchange = function(){
    var champDate = document.getElementById("date");
       if(this.value === 2){
         champDate.setAttribute("required", "required");
       } else {
        champDate.removeAttribute("required");
       }
    }

  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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Sylvain, puisque tu agis sur un objet JavaScript, autant modifier les attributs JavaScript plutôt que les attributs HTML (ce qui peut parfois poser des problèmes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    document.getElementById("status").onchange = function(){
    var champDate = document.getElementById("date");
       if(this.value === 2){
         champDate.required = true;
       } else {
        champDate.required = false;
       }
    }
    ou mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    document.getElementById("status").onchange = function(){
        var champDate = document.getElementById("date");
        champDate.required = this.value === 2;
    }

  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 641
    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 641
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    le required est valide à partir de quelle version ?


    A priori >= HTML 5
    et non valide sur Safari.

  5. #5
    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
    Points : 9 944
    Points
    9 944
    Par défaut
    @Bovino: oui, tu as raison. Bizarrement je suis plus confiant en manipulant les attributs HTML plutôt que les attributs Javascript, mais il n'y a pas vraiment de raison. Tu peux m'en dire plus sur les problèmes que cela peut causer ?

    @SpaceFrog: des polyfills javascript existent pour compléter le support des formulaires HTML5 sur les navigateurs plus anciens. Quitte à utiliser une validation Javascript, autant utiliser le standard quand c'est possible.

  6. #6
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'avais fait une page d'exemple pour montrer ça : Test attributs.

    En gros, à la construction de la page, les objets JavaScript de type HTMLElement sont initialisés en fonction de la valeur des attributs HTML. Si pour la plupart il y a une correspondance entre les attributs HTML et les propriétés JavaScript, ce n'est pas toujours le cas, notamment pour les champs de formulaire.

  7. #7
    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
    Points : 9 944
    Points
    9 944
    Par défaut
    Intéressant. J'ai fait d'autres tests avec l'attribution plus que la récupération :
    http://codepen.io/anon/pen/eAvjn

    On dirait qu'à partir du moment où on a forcé l'état en changeant l'attribut Javascript de l'input, alors le changement d'attribut HTML n'a plus d'effet.

Discussions similaires

  1. Réevaluer un binding sur ICollectionView quand un élément de la collection est modifié
    Par Deesmon dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 28/02/2013, 15h34
  2. Réponses: 12
    Dernier message: 22/12/2011, 06h16
  3. Action quand un élément de List est selectionné
    Par toshiro92 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 14/02/2009, 10h58
  4. Réponses: 1
    Dernier message: 19/02/2007, 16h58
  5. Savoir quand une hotkey est relachée
    Par kriterium dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2004, 14h44

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