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

Servlets/JSP Java Discussion :

JSP + HTML : onchange ne fonctionne pas


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut JSP + HTML : onchange ne fonctionne pas
    Bonjour ,

    Je suis sur un nouveau projet web en JSP, HTML et JS,..
    Sur une des pages jsp, je souhaite exécuter une action sur un champs de type FILE qui me permettra de récupérer la valeur du champs en faisant comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="file" id="id" name="name" size="50" onchange="monAction();">
    monAction() est une action java script, qui me permet de tester la valeur du champs dont l'id est "id".

    Le souci, l'action du "onchange" ne s’exécute jamais.

    Avez vous une suggestion ?

    Merci par avance

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Je ne vois rien de particulier au premier abort, tu peux nous montrer ton code JS ?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    Citation Envoyé par SI_BDD Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="file" id="id" name="name" size="50" onchange="monAction();">
    monAction() est une action javascript, qui me permet de tester la valeur du champs dont l'id est "id".

    Le souci, l'action du "onchange" ne s’exécute jamais.
    ne s'exécute jamais ou ne fais pas ce que tu souhaites ?

    essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="alert('Coucou');
    Si la fenêtre apparaît, cela vient sûrement du code de "monAction()".

    Peut-on le voir ?

  4. #4
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut mon action est elle incorrecte ?
    Bonjour,

    Merci pour les réponses.
    Effectivement le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="alert('Coucou');
    fonctionne.

    Mon code de l'action est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function monAction()
    	    {
    		 	if(document.getElementById("id")!=null) {
    			 	var val= document.getElementById("id");
    		         bool= val!=null && val!= '' ? true : false ;
    		 	}
    	    }
    En sachant que bool est une variable de type boolean que j'ai initialisé au debut de la JSP.

    Mon action est incorrecte ?

    Cordialement

    Citation Envoyé par plawyx Voir le message
    ne s'exécute jamais ou ne fais pas ce que tu souhaites ?

    essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="alert('Coucou');
    Si la fenêtre apparaît, cela vient sûrement du code de "monAction()".

    Peut-on le voir ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Par défaut
    Je te conseille d'installer le module complémentaire firebug pour ton navigateur firefox. Cela va te permettre de détecter les erreurs javascript.

  6. #6
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut
    Merci oliv37. Avec la version de firefox de l'entreprise, il ny'a pas de version de firebug dispo ( 17.0.6 )

    Cordialement

    Citation Envoyé par oliv37 Voir le message
    Je te conseille d'installer le module complémentaire firebug pour ton navigateur firefox. Cela va te permettre de détecter les erreurs javascript.

  7. #7
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Si tu veux récupérer la valeur associée à un élément tu dois le préciser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var val= document.getElementById("id").value;
    Sinon cela fait référence à l’élément entier de l'arbre DOM

    Ensuite pour tester l'existence d'un objet en javascript tu peux simplement écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( document.getElementById( "id" ) )
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( typeof(document.getElementById("id") ) != 'undefined' )
    mais il n'est pas nécessaire de tester son existence étant donnée que tu l'écris en dur dans ton code, donc cet élément sera toujours présent.

    Pour finir il me semble (mais là je n'en suis pas sur) que les valeurs des éléments ne sont jamais null, mais simplement vide.

    Ducoup tu dois pouvoir écrire ton code comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function monAction() {
      bool = document.getElementById("id").value != '';
      alert ( 'Mon champ est-il rempli ? ' + bool );
    }

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Par défaut
    As-tu essayé de mettre un alert('ok') dans ta fonction monAction pour bien vérifier qu'elle n'est pas exécutée ?

  9. #9
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut
    merci pr les réponses, en faisant ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function monAction(){
    		alert('ok');
    		bool= document.getElementById("id").value != '';
    		alert ( 'Mon champ est-il rempli ? ' + bool);
    	}
    Résulat :
    J'ai droit juste à un "ok".

    Donc pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("id").value != ''
    ne me renvoie rien. c'est très étonnant

    Par contre, je viens de faire un autre test comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert ( 'Mon champ est-il rempli ? ' + document.getElementById("id").value != '' );
    l'alerte m'affiche un "true" quand je saisi quelque chose dans mon champs. Ceci dit, je pense que c'est lors de l'utilisation de ma variable booléenne que ça ne marche pas super bien.

    je vais continuer les investigations.


    Citation Envoyé par oliv37 Voir le message
    As-tu essayé de mettre un alert('ok') dans ta fonction monAction pour bien vérifier qu'elle n'est pas exécutée ?

  10. #10
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut
    Pour vérifier la valeur de la variable "bool" avant et après l’exécution de l'action, je remarque que la valeur reste toujours à "false".
    Peut être il faudrait rafraichir la page ? des idées pour cela ?

    Merci.

    Cordialement

    Citation Envoyé par SI_BDD Voir le message
    merci pr les réponses, en faisant ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function monAction(){
    		alert('ok');
    		bool= document.getElementById("id").value != '';
    		alert ( 'Mon champ est-il rempli ? ' + bool);
    	}
    Résulat :
    J'ai droit juste à un "ok".

    Donc pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("id").value != ''
    ne me renvoie rien. c'est très étonnant

    Par contre, je viens de faire un autre test comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert ( 'Mon champ est-il rempli ? ' + document.getElementById("id").value != '' );
    l'alerte m'affiche un "true" quand je saisi quelque chose dans mon champs. Ceci dit, je pense que c'est lors de l'utilisation de ma variable booléenne que ça ne marche pas super bien.

    je vais continuer les investigations.

  11. #11
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Mais elle est initialisé ou cette variable bool au fait ?

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Par défaut
    C'est du javascript donc pas besoin de rafraîchir la page.
    Effectivement il faudrait nous montrer le code complet.
    Etant donné que c'est une variable globale, peut-être que tu la modifies également dans une autre partie du code...

  13. #13
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut
    Tout au début de la jsp entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <% 
    boolean bool = false;
    %>
    et la fonction entreEst ce que cela pose problème ? je n'ai pas vraiment l'habitude d'utiliser trop de javascript

    merci

    Citation Envoyé par Nico02 Voir le message
    Mais elle est initialisé ou cette variable bool au fait ?

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Par défaut
    pour déclarer une variable en javascript il me semble qu'il faut utiliser le mot-clé var.

  15. #15
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Citation Envoyé par oliv37 Voir le message
    pour déclarer une variable en javascript il me semble qu'il faut utiliser le mot-clé var.
    Tu peux très bien te passer du mot clé var il n'y a pas de soucis de se coté là.

    Par contre @SI_BDD je pense que tu fais une grosse confusion dans ce que fais JSP.

    Le code JSP d'une page s’exécute coté serveur et est donc exécute avant le code JavaScript qui lui est exécuté sur le poste client. Tu ne peux donc pas mêler tes variables comme tu le fais (en tout cas pas comme ça).

    Comme je ne sais pas vraiment se que tu veux faire avec se code je ne peux t'aider plus que ça, mais je t'invite en tout cas à lire de la documentation sur JSP et l'interaction avec du javascript

    Cdt.

  16. #16
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut
    En regardant de plus prés ma jsp, je me rend compte que ma variable bool est initialisée dans une scriptlet ( java), donc c'est côté serveur si j'ai bien compris.

    c'est à cause de ça que la variable ne prend jamais la nouvelle valeur car le code java n'est exécuté que au chargement de la jsp ?


    Comment faire pour remédier à cela ?

    Merci




    Citation Envoyé par oliv37 Voir le message
    pour déclarer une variable en javascript il me semble qu'il faut utiliser le mot-clé var.

  17. #17
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Exactement,

    Lorsque que tu écris une page JSP, elle est d'abord interprétée coté serveur. Tous les appels à tes beans et au code java en général est fait coté serveur.

    Les tags JSP correspondent à des "marqueurs" qui sont remplacé par les valeurs de ton code Java. Une fois cette phase effectuée, la page ainsi générée est envoyé au client pour être interprété par le navigateur qui va afficher le contenu.

    Il est donc ici logique que tu ne puisses plus accéder à tes variables serveur coté client.

    Les solutions qui te reste sont, soit de valider ta page (submit de ton formulaire par exemple) et d'effectuer ton traitement à se moment là (puisque la page est renvoyé au serveur avec tes nouvelles valeurs).
    Soit d'utiliser AJAX pour faire un appel serveur.

    Mais comme je ne sais toujours pas quel est le but de tout ça, je n'en dirai pas plus

    Cdt.

  18. #18
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <script>
    <%
    boolean bool = false;
    ...
    out.print("var bool = " + bool);
    %>
    </script>
    mais si c'est comme tu l'as montré, ceci suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script>
    var bool = false;
    </script>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Membre confirmé
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Par défaut
    Merci pour l'explication.
    En fait le but de ce que je suis entrain de faire est de voir si un champs est rempli, pour afficher/ou pas un autre champs.
    Ce que je viens de faire et qui fonctionne sans utiliser une variable côté serveur est de changer ma fonction javaScript pour rendre visible ou pas mon deuxième champs comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function monAction(){
    		document.getElementById("id").style.visibility="hidden";
    		bool= document.getElementById("id").value != '';
    		 if (bool== true){
    	         document.getElementById("champs2").style.visibility="visible";
    		}else { document.getElementById("champs2").style.visibility="hidden";
     }
    je suis entrain de tester pour voir ce que ça donne, vu ce que je vois ca fonctionne seulement si mon champs est de type text ( pas pour file par exemple )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="file" id="id" name="idName" size="65" onchange="monAction();">
    cdt
    Citation Envoyé par Nico02 Voir le message
    Exactement,

    Lorsque que tu écris une page JSP, elle est d'abord interprétée coté serveur. Tous les appels à tes beans et au code java en général est fait coté serveur.

    Les tags JSP correspondent à des "marqueurs" qui sont remplacé par les valeurs de ton code Java. Une fois cette phase effectuée, la page ainsi générée est envoyé au client pour être interprété par le navigateur qui va afficher le contenu.

    Il est donc ici logique que tu ne puisses plus accéder à tes variables serveur coté client.

    Les solutions qui te reste sont, soit de valider ta page (submit de ton formulaire par exemple) et d'effectuer ton traitement à se moment là (puisque la page est renvoyé au serveur avec tes nouvelles valeurs).
    Soit d'utiliser AJAX pour faire un appel serveur.

    Mais comme je ne sais toujours pas quel est le but de tout ça, je n'en dirai pas plus

    Cdt.

  20. #20
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Dans se cas tu ne dois pas utiliser de variables serveur ça n'a aucun intérêt, continue sur du JS pur.

    Par contre je peux t'assurer que ça marche aussi pour les <input type="file">

    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
     
     
    <html>
    <head>
    <script>
     
    function checkField()
    {
     
    if( document.getElementById('t1').value != '' )
    {
     document.getElementById('id2').style.visibility="visible";
    }
    else
     document.getElementById('id2').style.visibility="hidden";
    }
     
     
    function checkFile()
    {
     
    if( document.getElementById('f1').value != '' )
    {
     document.getElementById('id1').style.visibility="visible";
    }
    else
     document.getElementById('id1').style.visibility="hidden";
    }
    </script>
    </head>
    <body>
     
    <input type="file" id="f1" name="file" onchange="checkFile();">
    <input type="text" id="id1" name="txt2" value="Hello" style="visibility:hidden;">
    </br>
    </br>
     
    <input type="text" id="t1" name="txt1" value="Hello 1" onchange="checkField();" >
     
    <input type="text" id="id2" name="txt2" value="Hello 2" style="visibility:hidden;">
     
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. onchange ne fonctionne pas
    Par EIN-LESER dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/03/2012, 10h58
  2. ouvrir fichier Excel dans page HTML : macro ne fonctionne pas
    Par bella1 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 30/06/2011, 09h50
  3. onChange ne fonctionne pas sous IE7
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 06/04/2008, 13h37
  4. [HTML] iframe ne fonctionne pas sous firefox
    Par freija dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 29/08/2006, 12h20
  5. [HTML] [FLASH MX2004] Ne fonctionne pas en ligne
    Par Invité4 dans le forum Flash
    Réponses: 8
    Dernier message: 31/10/2005, 14h53

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