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 :

Gérer des attributs "value" avec Javascript


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 717
    Points
    1 717
    Par défaut Gérer des attributs "value" avec Javascript
    Bonjour,

    Peut-on utiliser du javascript pour établir la value d'un champ input ? Ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="champ" value="<script language='JavaScript' type='text/javascript'>document.write(MaFonction());</script>" />
    (la fonction renvoie bien un résultat)

    Le but de la manoeuvre est de faire passer la valeur par un formulaire POST, en passant par php ça marche mais pas avec JS.

    Merci pour votre aide !

    Edit : résolu (voir les messages fin page 2 + page 3 pour toutes explications)

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par Jarodd Voir le message
    Peut-on utiliser du javascript pour établir la value d'un champ input ?
    Oui
    Citation Envoyé par Jarodd Voir le message
    Ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="champ" value="<script language='JavaScript' type='text/javascript'>document.write(MaFonction());</script>" />
    Ce n'est pas comme ca qu'il faut faire...
    Si tu veux passer par javascript pour agir sur la valeur d'un champ, voici des exemples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
      document.forms['nomDuFormulaire'].elements['nomDuChamp'].value = MaFonction();
    </script>
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
      document.getElementById('idDuChamp').value = MaFonction();
    </script>
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    essaye plutot ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    <script>
    function maFonction(){
    novelleValeur=//mon calcul;
    document.getElementByTagName("champ").value=nouvelleValeur;
    };
     
    </script>
     
    <input type="hidden" name="champ" value=""/>
     
    MaFonction();
    bonne journée

  4. #4
    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 717
    Points
    1 717
    Par défaut
    Merci pour le tuyau !

    Mais je ne comprend pas à quel endroit il faut mettre le script ? Est-ce cela remplace la value du champ caché ? Dans ce cas faut-il mettre quelque chose à la place ?

    (edit : c'est la réponse à gwyohm, je teste le code Alexdezark de suite !)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    ha, y'avait déja une réponse...

    Comme ça tu as plusieures solutions

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    alors :

    ta fonction en haut de page.

    puis ton champ masqué (value="")

    puis l'appel à ta fonction qui définit la valeur de ton champ masqué

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par Jarodd Voir le message
    Mais je ne comprend pas à quel endroit il faut mettre le script ?
    tu peux en faire une fonction (comme dans la réponse de Alexdezark), que tu pourras appeler sur le onload du <body> : elle sera lancée dès la page entièrement chargée et alimentera ton input.

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Alexdezark Voir le message
    ta fonction en haut de page.

    Pas du tout
    Au contraire : c'est là que tu as le plus de "chance" d'avoir des erreurs (objet inexistant).
    Il faut la déclarer dans la partie <head>, puis l'appeler soit dans le onload du body, soit en toute fin de page (au niveau de </body>.
    Citation Envoyé par Alexdezark Voir le message
    (value="")
    Non ! Peu importe la valeur qu'il avait avant

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par Jarodd Voir le message
    Merci pour le tuyau !

    Mais je ne comprend pas à quel endroit il faut mettre le script ? Est-ce cela remplace la value du champ caché ? Dans ce cas faut-il mettre quelque chose à la place ?

    !)
    Non il faut garder ton champ hidden :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form name="nomDuFormulaire">
    <input type="hidden" name="champ" value="" />
    </form>
    <script type="text/javascript">
      document.forms['nomDuFormulaire'].elements['champ'].value = MaFonction();
    </script>
    par exemple.
    Concernant la réponse d'Alexdezark, il y a quelques trucs qui me chiffonnent :
    document.getElementByTagName n'existe pas je crois : il s'agit de document.getElementsByTagName.
    De plus cette méthode se base sur le nom de la balise, pas la propriété name donc plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementsByTagName("input");
    mais qui va renvoyer un tableau de tous les inputs... Je pense qu'Alexdezark pensait plutot à getElementsByName...
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par gwyohm Voir le message
    Concernant la réponse d'Alexdezark, il y a quelques trucs qui me chiffonnent :
    document.getElementByTagName n'existe pas je crois : il s'agit de document.getElementsByTagName.
    De plus cette méthode se base sur le nom de la balise, pas la propriété name donc plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementsByTagName("input");
    mais qui va renvoyer un tableau de tous les inputs... Je pense qu'Alexdezark pensait plutot à getElementsByName...
    Je n'avais pas vu mais tu as tout à fait raison. Dans le cas présent, aucun des 2 (même avec une syntaxe correcte) n'est pertinent.
    C'est soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['nomDuFormulaire'].elements['champ'].value
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsById('id_input').value
    suivant si l'on est ou non dans un <form> ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  11. #11
    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 717
    Points
    1 717
    Par défaut
    MErci pour toutes ces réponses, je suis en train de tester mais le JS n'est pas mon fort, ça prend un peu de temps

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Oui excuse moi

    J'ai cherché à te faire une réponse rapide avec tes éléments

    J'utilise plus volontier getElementById()

    C'est pour ça

  13. #13
    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 717
    Points
    1 717
    Par défaut
    Bon j'avance un peu...

    Concernant la solution de gwyohm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form name="nomDuFormulaire">
    <input type="hidden" name="champ" value="" />
    </form>
    <script type="text/javascript">
      document.forms['nomDuFormulaire'].elements['champ'].value = MaFonction();
    </script>
    Le formulaire ne passe pas la valeur apparemment ( <?php echo $_POST['champ']; ?> dans la page cible n'affiche rien). Mais si le script est après le </form>, est-il pris en compte au moment où on poste le formulaire ? Là j'ai l'impression qu'on envoie la valeur du champ au moment du </form> c'est-à-dire une value vide ?

    Seulement si je met le script avant, le formulaire n'existe pas encore... Je vais peut-être essayer avec le script dans le formulaire ? Mais c'est un peu dégueu non ?

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    l'appeler soit dans le onload du body, soit en toute fin de page (au niveau de </body>.
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Jarodd Voir le message
    Mais c'est un peu dégueu non ?
    Un peu plus, oui ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  16. #16
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Bonjour,
    Essaye de mettre la valeur que tu veux obtenir pour ton champ cachée entre guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
      document.forms['nomDuFormulaire'].elements['champ'].value = "MaFonction()";
    </script>

  17. #17
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par Jarodd Voir le message
    Seulement si je met le script avant, le formulaire n'existe pas encore... Je vais peut-être essayer avec le script dans le formulaire ? Mais c'est un peu dégueu non ?
    Si ma solution tel que ne va pas, ca ne fonctionnera pas mieux avec le script directement dans le formulaire. Le script qui rempli le champ s'execute dès qu'il est écrit sur la page.

    Je pense qu'il nous faut plus d'éléments pour t'aider : peut être ta fonction, ou mieux l'ensemble de la page html.
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par gwyohm Voir le message
    Le script qui rempli le champ s'execute dès qu'il est écrit sur la page.
    Heu ... vaguement. Mais le problème est que l'objet auquel il fait référence n'existe pas forcément à cet instant (même s'il est placé avant).
    Voir ci-dessus (onload etc) ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  19. #19
    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 717
    Points
    1 717
    Par défaut
    Ok je récapépète :

    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
     
    <head>
    <script language="JavaScript" type="text/javascript">
    function Chargement() {
    	document.forms['ListPost'].elements['champ'].value = Recupchamp();
    	// ceci pour tous les champs
    }
     
    function RecupChamp() {
    	var champ = window.opener.document.getElementById('formulaire').champ.value;
    	return champ;
    	}
    </script>
    </head>
     
    <body onLoad="Chargement();"> 
     
    	<form method="post" name="ListPost" action="./ListInsert.php" >
    		<input type="hidden" name="champ" value="" />
    		<!-- idem pour tous les champs -->
    	</form>
     
    </body>
    L'événement onLoad() est bien exécuté au chargement de page, j'ai vérifié en mettant un alert(champ) dans RecupChamp().

    Ca vous semble correct ? parce que ça marche pas

  20. #20
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Jarodd Voir le message
    Ca vous semble correct ? parce que ça marche pas
    Y a un problème là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var champ = window.opener.document.getElementById('formulaire').champ.value;
    Ca devrait plutôt ressembler à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var champ = window.opener.document.getElementById('id_du_champ').value;
    Mais il faut que le 'champ' dans ton opener ait un id ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

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

Discussions similaires

  1. Recuperer le noms des attributs d'une requete avec Hibernate
    Par Molkobain dans le forum Hibernate
    Réponses: 11
    Dernier message: 11/03/2009, 08h48
  2. Problème d'utilisation des attributs width et height avec une image distante
    Par Ptit_Mouss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/09/2006, 15h40

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