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 :

changement de "value" par popup impossible


Sujet :

JavaScript

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut changement de "value" par popup impossible
    Bonjour,

    J'ai un peu de mal avec le JS... J'ai beau chercher dans tous les sens je ne comprend pas pourquoi ce bout de code ne fonctionne pas...

    Le formulaire qui ouvre un calendrier en popup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form method="post" name="form" id="form" action="enregistreDateListe.php">
    	<input name="action_date1" title="Click to modify"  value="<?php echo $dateObjectif; ?>" onClick="ouvrirPopup('../calendrier/calendar.php', 'calendrier', 170, 170, 760, 300);">
    	<input name="action_date2" title="Click to add a date"  value="Click to add a date" onClick="ouvrirPopup('../calendrier/calendar.php', 'calendrier', 170, 170, 760, 300);">
    Le calendrier qui renvoie la date choisie au formulaire (dans un input à mettre à jour) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    // si on a cliqué sur une date
    if(isset($_GET['date'])){
            $date = $_GET['date'];
    ?>
    	<script language="JavaScript" type="text/javascript">
    		window.opener.document.form.action_date2.value = "<?php echo $date; ?>";
    		window.opener.focus();
    		window.close();
    	</script>
    <?php
    }
    ?>
    "window.opener" correspond à la page appelante. Mon formulaire a bien un nom "form". Le champ testé est bien nommé "action_date2". Pourtant sa value ne bouge pas... J'ai vérifié la syntaxe avec Quirksmode.org, ça me semble correct pourtant !



    Merci pour votre aide !

  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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    un calendrier en popup ...desolé mais ça pue !!!

    jette plutot un oiel là dessus
    calendrier non intrusif ergonimique convivial paramètrable et skinnable

    http://www.developpez.net/forums/d64...s-mieux-mieux/

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut
    Malheureusement ce n'est pas à moi que revient la décision... Et vu que le projet est bien avancé, je doute que les chefs acceptent qu'on change de système maintenant !

    Mais si on oublie le but de la manoeuvre, c'est bien possible de faire mettre à jour un champ avec ce code non ? Une idée là dessus ?

  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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    j'ai pas bein saisi ou se trouve le code qui mets à jour l'input et pourquoi tu as un test php...

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Il me semble que cette notation n'est plus très compatible

    window.opener.document.form.action_date2.value

    Ceci me semble plus adapté

    window.opener.document.forms['form'].elements['action_date2'].value

    ça serait plus simple si ton champs avait un id, tu pourrais écrire:

    window.opener.document.getElementById('id_du_champ').value

  6. #6
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut
    SpaceFrog : ce code est à la fin de la page du calendrier, c'est aussi un code récupéré quelques part par la personne qui s'en occupait avant moi, mais elle n'a mis aucun lien pour le retrouver... En gros il y a une classe Calendar() qui affiche le tout, et quand on clique sur une date elle est stockée dans $date. C'est cette variable qu'on passe ensuite à la page appelante via JS.

    Marcha : j'avais enlevé l'id mais il y était avant, et pas de résultat avec getElementById non plus... Je reteste de suite.

  7. #7
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    oui et self plutot que window ...

    ce qui m'amène à dire que leself.close risque de poser problème
    et qu'il vaut mieux sur le onclick dasn le popup lancer un code dasn la page mère qui se cahrgera à la fois de la mise à jour du champ et de la fermeture de la popup

  8. #8
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut
    Citation Envoyé par marcha Voir le message
    ça serait plus simple si ton champs avait un id, tu pourrais écrire:

    window.opener.document.getElementById('id_du_champ').value

    C'était la bonne solution, merci beaucoup

    (mais cela ne marche pas avec l'attribut name, je ne sais pas pourquoi...)

  9. #9
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    qui dit name dit collection ...

  10. #10
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut
    Bon j'ai de la doc à lire sur les collections

    Je rouvre le sujet car finalement ce n'est résolu qu'à moitié. La nouvelle valeur apparaît bien sur la page, seulement quand je veux l'enregistrer (un simple post vers une page qui fait la requête sql), c'est l'ancienne valeur qui passe !

    J'ai essayé de faire un window.opener.location.reload(); après la transmission mais c'est pareil, la nouvelle valeur apparaît 1 sec puis c'est l'ancienne qui revient. En fait le reload() recharge le code source de la page, donc on charge l'ancienne valeur et pas la nouvelle valeur qui n'apparaît nulle part...

    Mais je ne vois pas bien comment faire, j'ai bien pensé à récupérer la valeur postée par javascript mais c'est sale et ensuite galère pour l'insertion vu que le JS sera exécuté après le php. Bref, encore une galère !

    Décidément dès qu'il y a un bout de JS ça me met dans la m.... en ce moment (svp ne me dites pas Ajax )

  11. #11
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.forms['form'].elements['action_date2'][0].value

  12. #12
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut
    Ca fonctionne pour le premier problème qui est résolu, mais pas pour le nouveau, c'est toujours l'ancienne valeur qui est transmise par POST...

  13. #13
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    c'est qu'il doit y avoir un champs hidden et que tu ne récupères pas le bon

  14. #14
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Tu peux nous poster le code html (pas le source php) de ta page formulaire ?

  15. #15
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    pour ce qui est de changer de système entre popup et calendrier non instrusif ... y'en a pour 1/4 d'heure à tout casser ...

  16. #16
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    y'en a pour 1/4 d'heure à tout casser ...
    Et 3 jours à tout réparer :-)

    Non je plaisante... SpaceFrog a parfaitement raison, un calendrier sans popup
    serait moins problématique à terme.

  17. #17
    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 640
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    mouarf !

    alors je reformule :
    1/4 dans le pire des cas ...

Discussions similaires

  1. [ICEFACES] Les quotes sont remplacées par &#_39;
    Par Mathieu.J dans le forum JSF
    Réponses: 0
    Dernier message: 19/01/2010, 16h09

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