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

jQuery Discussion :

Comment récupérer la valeur saisie dans un textarea ?


Sujet :

jQuery

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut Comment récupérer la valeur saisie dans un textarea ?
    Bonjour,

    Presque tout est dans le titre !

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var commentaire = $("#msg_addAsFriend").val();
    J'ai essayé plus classiquement avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var commentaire = document.getElementById("msg_addAsFriend").value;
    Mais un alert(commentaire) ne donne qu'une boîte blanche dans le premier cas et un bel "undefined" dans le second.

    Je précise que ce textarea est dans le code HTML d'une fancybox mais bien sûr, le code javascript est exécuté après clic du bouton de la fancybox.

    Une idée de la cause et de la solution ?

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    C'est bien la méthode val() qu'il convient d'utiliser : http://api.jquery.com/val/

    Je précise que ce textarea est dans le code HTML d'une fancybox mais bien sûr, le code javascript est exécuté après clic du bouton de la fancybox.
    Une génération dynamique ? Voir la méthode delegate() ou on() avec 1.7 et + : http://api.jquery.com/delegate/

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Bonsoir

    C'est bien la méthode val() qu'il convient d'utiliser : http://api.jquery.com/val/
    Sauf que ça ne fonctionne désespérément pas !



    Une génération dynamique ? Voir la méthode delegate() ou on() avec 1.7 et + : http://api.jquery.com/delegate/
    Euh... qu'appelles-tu génération dynamique ?

    Le contenu de la Fancybox est défini en div cachée de la page HTML. Elle contient un bouton qui lance la fonction dans laquelle se trouve la (tentative de) récupération du contenu de la textarea située elle aussi dans la fancybox.

    Euh... ça sert à quoi ce delegate ? Je ne suis qu'un grand débutant en Javascript et encore plus en JQuery et autres fantaisies Ajax.

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    Bonjour,

    Pourrais-tu nous fournir le HTML concerné par ce code javascript, s'il te plait ?

    Cordialement.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Voilà le code...

    Dans la vue, la partie contenant le lien qui ouvre la fancybox (afficheShareIt) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
            if($info['id_crea'] != $_SESSION['coords']['id'])
            {
                    // Si le créateur du message n'est pas le membre connecté
    ?>
                                                    &nbsp;&nbsp;
                                                    <a id="<?php echo $id_msg; ?>" 
                                                            href="javascript:afficheShareIt(<?php echo $id_msg; ?>, '<?php echo $info['message']; ?>');" 
    							class="souligneSurvol"
    						>
    							<?php echo $trad_share; ?>							
    						</a>
    Le javascript afficheShareIt :
    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
    /**
     * afficheShareIt
     * Affiche la popup Share It
     * @param idMessage
     * @return
     */
    function afficheShareIt(idMessage, message)
    {
    	$("#shareItMessage").text(message);
    	$.fancybox(
    			document.getElementById("popupShareIt").innerHTML,
    			{
    				'autoDimensions'	: false,
    				'width'         	: 'auto',
    				'height'        	: 'auto',
    				'transitionIn'		: 'none',
    				'transitionOut'		: 'none'
    			}
    		);
    }
    Dans la vue le code du contenu de la fancybox :
    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
    <div id="popupShareIt"  class="popupFancyBox">
    	<span class="popupTitle"><?php echo $trad_share; ?></span>
    	<div class="popupForm">
    		<form action="" method="post">
    			<div id="shareItPhoto">
    				<img src="images/profil/<?php echo (($_SESSION['coords']['photo']) != ''?$_SESSION['coords']['photo']:'no-image.png'); ?>" width="60px"; height="60px" />";
    			</div>
    			<div id="shareItYourMessageDiv">
    				<?php echo $trad_your_message; ?> :<br />
    				<textarea id="msg_addAsFriend" name="msg_addAsFriend"></textarea>
    			</div>
    			<div class="popupMessageDiv">
    				<div id="shareItMessage"></div>
    				<input id="shareItButton" type="button" onclick="javascript:shareMessage(<?php echo $id_msg.', '.$_SESSION['coords']["id"]; ?>);" />;
    				<div id="shareItCadenas" class="afficher_popup"  onclick="afficherPopup('shareItCadenas');">
    					<input id="chp_sharewith" name="chp_sharewith" type="hidden" value="<?php echo (($_SESSION['coords']['sharewith'] == "")?"everyone":$_SESSION['coords']['sharewith']); ?>" />
    				</div>
    			</div>
    		</form>
    	</div><!-- Fin shareItForm -->
    </div><!-- Fin popupShareIt -->
    La fonction Javascript shareMessage :
    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
    /**
     * shareMessage
     * Enregistre le partage d'un message
     * @param integer idmsg : identifiant du message
     * @returns nothing
     */
    function shareMessage(idmsg, idj)
    {
    	var commentaire = $("#shareItMessage").val();
    	alert("contenu du textarea : "+commentaire);
    	$.ajax(
    		{
    			url: "ajax/addcomment.php",
    			global: false,
    			type: "POST",
    			data: ({idMessage : idmsg, idjoueur : idj, msg_commentaire : commentaire}),
    			dataType: "html",
    			async:false,
    			success: function(retour)
    			{
    				alert('commentaire ajouté');
     
    			}
    		}
    	);
    }
    Merci d'essayer de m'aider.

  6. #6
    Membre confirmé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    Janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : Janvier 2007
    Messages : 383
    Points : 469
    Points
    469
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       <textarea id="msg_addAsFriend" name="msg_addAsFriend"></textarea
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="shareItMessage"></div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        var commentaire = $("#shareItMessage").val();
        alert("contenu du textarea : "+commentaire);
    Tu ne récupères pas le bon élément.

    ps : Il serait mieux de poster le code HTML généré dépourvu du code PHP

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Il y avait effectivement une coquille mais même en la corrigeant, je n'affiche toujours pas le contenu saisi dans la textarea dans la boîte d'alerte.

    Voici le code HTML produit pour le contenu de la fancybox :
    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
    20
    21
    22
    23
    <div id="popupShareIt"  class="popupFancyBox">
    	<span class="popupTitle">Partager</span>
    	<div class="popupForm">
    		<form action="" method="post">
     
    			<div id="shareItPhoto">
    				<img src="images/profil/d41d8cd98f00b204e9800998ecf8427e-16.jpg" width="60px"; height="60px" />";
    			</div>
    			<div id="shareItYourMessageDiv">
    				Votre message :<br />
    				<textarea id="msg_addAsFriend" name="msg_addAsFriend"></textarea>
    			</div>
    			<div class="popupMessageDiv">
     
    				<div id="shareItMessage"></div>
    				<input id="shareItButton" type="button" onclick="javascript:shareMessage(5, 16);" />;
    				<div id="shareItCadenas" class="afficher_popup"  onclick="afficherPopup('shareItCadenas');">
    					<input id="chp_sharewith" name="chp_sharewith" type="hidden" value="everyone" />
    				</div>
    			</div>
    		</form>
    	</div><!-- Fin shareItForm -->
    </div><!-- Fin popupShareIt -->

  8. #8
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var $form = jQuery('#form_blabla'),
       			id = $form.find('input[name="id"]').val(),
       			titre = $form.find('input[id="titre"]').val(),
       			desc = $form.find('textarea[id="description"]').val(),
       			url = $form.attr('action'),
       			method = $form.attr('method');
    
    jQuery.post(url, {fid: id, ftitre: titre, fdesc: desc, fpermanent: protege, fide_user: publique});
    A Adapter

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Euh... il est censé servir à quoi ce code ?
    Fabriquer la boîte de dialogue ou récupérer ses valeurs ?

    Je le mets où dans mon code actuel ?

  10. #10
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Si tu veux récupérer la valeur de ta textarea "msg_addAsFriend", tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery('#class de ton textarea || document').find('textarea[id="msg_addAsFriend"]').val()
    Placé le tout dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery(document).ready(function(){....});

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Que veux-tu dire par class de ton textarea || document ?

    La classe CSS ? Il n'y en a pas pour la textarea.
    Et c'est quoi la double barre verticale et document ?

    Et jQuery(document).ready(function(){....});, ça ne va pas s'exécuter dès chargement de la page ?

  12. #12
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut .html
    tu as essayé la fonction .html() ou lieu de .val()?

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Pas de changement avec .html !

  14. #14
    Membre actif
    Homme Profil pro
    Développeur Full Stack
    Inscrit en
    Mai 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mai 2010
    Messages : 159
    Points : 220
    Points
    220
    Par défaut
    Déjà dans ton jquery tu veux récupérer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var commentaire = $("#shareItMessage").val();
    alors que l'id de ton textarea est

  15. #15
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Merci Franck mais ça m'a déjà été signalé un peu plus haut.

    En message privé, tu m'as suggéré ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('input#submit').click(function() {
    var texte = $('#msg_addAsFriend').val();
    alert(texte);
    })
    Je l'ai essayé brut puis en corrigeant le nom du composant, je suis arrivé à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function shareMessage(idmsg, idj)
    {
    	$('#shareItButton').click(function() {
    		var commentaire = $('#msg_addAsFriend').val();
    		alert("contenu du textarea : "+commentaire);
    		}) 
    	//var commentaire = document.getElementById("msg_addAsFriend").value;
    	//var commentaire = $("#msg_addAsFriend").val();
    	//alert("contenu du textarea : "+commentaire);
    Ce coup-ci, je n'ai même pas la boîte d'alert !

    Je suis ouvert à toute solution me permettant d'avoir une boîte de dialogue variable et récupérer la valeur de son textarea après clic sur le bouton pour l'injecter dans un programme Ajax.

  16. #16
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Par génération dynamique, je pensais à la génération du textarea par la FancyBox et que vous aviez besoin d'y avoir accès dans un gestionnaire d'événement.

    Que donne : var commentaire = $( "#popupShareIt" ).find( "textarea" ).val() ?

  17. #17
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Rien de mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function shareMessage(idmsg, idj)
    {
    	var commentaire = $( "#popupShareIt" ).find( "textarea" ).val();
    	alert("contenu du textarea : "+commentaire);
    Pas de commentaire saisi affiché.

    EDIT :
    Je viens de remarquer que la div définie par le programme PHP reste en display:none dans Firebug et que cette div est en fait encapsulée dans la div créée par la fancybox ayant pour id "fancybox-content".
    Du coup, j'ai adapté ton code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var commentaire = $( "#fancybox-content" ).find( "textarea" ).val();
    Et ça fonctionne ; j'ai bien le texte saisi dans la textarea de la fancybox qui s'affiche dans la boîte d'alert.

    Merci pour ton aide Daniel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 26/11/2009, 16h28
  2. Récupérer la valeur saisie dans un champ caché
    Par sheira dans le forum Langage
    Réponses: 14
    Dernier message: 03/04/2007, 17h06
  3. Réponses: 2
    Dernier message: 08/01/2007, 09h01
  4. comment récupérer le valeur mise dans le label puis afficher
    Par aliosys dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/12/2005, 20h00
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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