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 :

Copie de certaines données d'un textarea vers un autre textarea


Sujet :

JavaScript

  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut Copie de certaines données d'un textarea vers un autre textarea
    Bonjour

    J'ai une première balise textarea ayant comme id="t1" avec comme contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Suspension (perte)
    Ligne suspendue à: 12h00.
    et une seconde ayant comme id="t2":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Suspension (perte)
    Ligne suspendue à:
    Service inaccessible.
    Lorsque je saisis par exemple l'heure à laquelle est suspendue la ligne, je souhaiterai via un script Javascript que cette information par le biais d'un bouton soit copiée automatiquement dans mon second textarea au même endroit.

    Est-ce possible ? Auriez-vous des pistes à me donner s'il vous plaît ?

    Merci d'avance

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('textarea2').value=document.getElementById('textarea1').value
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    tu est étonné de ma demande. Je ne souhaite pas copier le contenu de la balise t1 vers la t2 mais seulement l'heure de suspension dans t2 au bon endroit

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Ha desolé j'avais pas vu ce détail !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('textarea2').value=document.getElementById('textarea1').value.split('à: ')[1]
    ou alors avec une regExp et un match
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Le comportement du code ci-dessus est étrange

    Je résume, j'ai un premier textarea (t1) avec ce contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Coucou c'est moi.
    La date du jour est: 10/02/09.
    Merci au revoir.
    J'ai une deuxième balise textarea (t2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Coucou c'est moi.
    La date du jour est:
    Merci au revoir.
    Ok bye.
    Lorsque je saisis la date "10/02/09." je souhaite qu'elle soit copiée dans (t2) à coté du texte "La date du jour est:" hors le code exécuté m'affiche dans (t2) ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    10/02/09.
    Merci au revoir.
    Ok bye.
    Il me supprime tout le texte avant la date

  6. #6
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je suis perdu avec split. Il me supprime toujours les premiers champs

  7. #7
    Expert éminent

    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
    Par défaut
    Bonjour,
    j'ai pas bien suivi, mais l'exemple de Spaffy ne récupère que le 2° élément du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('textarea1').value.split('à: ')[1]
    Ton 1° champ n'est pas supprimé, c'est juste que tu ne le récupères pas. Il est dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('textarea1').value.split('à: ')[0]
    ... Enfin, normallement

    A+

  8. #8
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Du coup, je suis complètement paumé

    Je vais tacher d'être un peu plus précis

    Une balise textarea (t1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Suspension (perte)
    Ligne suspendue à: 12h00.
    Suspension immédiate.
    Merci.
    Une deuxième balise textarea (t2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Suspension (perte)
    Ligne suspendue à:
    Merci.
    Lorsque je saisis l'heure de suspension dans t1, je souhaite par l'intermédiaire d'un bouton copier la date en rouge dans t2 sans supprimer la partie du texte de couleur bleu.

    Est-ce possible car actuellement avec le code proposé par SpaceFrog j'obtiens le résultat suivant:
    Il manque ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Suspension (perte)
    Ligne suspendue à:
    Merci.
    Une idée ?

    Merci d'avance

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Par défaut
    Bonsoir. =)
    Le mieux serait d'englober cette mini fonction dans une fonction.
    Voilà le code brut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script type="text/javascript">
    var contenu=document.getElementById('textarea1').value;
    var t=contenu.split('\n')[1].split('à: ');
    var heure=t[1];
    var resultat=document.getElementById('textarea2').value, res='';
    var u=resultat.split('\n');
    u[1]+=heure;
    for(var i=0; i<u.length; i++) {
    var w='\n';
    if(i==u.length-1) w='';
    res+=u[i]+w;
    }
    document.getElementById('textarea2').value=res;
    </script>

  10. #10
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je suis impressionné car le Javascript n'est pas mon langage préféré. Le résultat que j'obtiens est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Suspension (perte)
    Ligne suspendue à:
    12h00.
    Merci.
    Il faut juste supprimer le saut de ligne mais encore faut-il savoir lequel

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Par défaut
    Voilà, ce devrait être bon

    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
    <script type="text/javascript">
    var contenu=document.getElementById('textarea1').value;
    var t=contenu.split('\n')[1].split('à: ');
    var heure=t[1];
    var resultat=document.getElementById('textarea2').value, res='';
    var u=resultat.split('\n');
    for(var i=0; i<u.length; i++) {
        var w='\n';
        u[i]=u[i].replace(/^\s+/, '')
        u[i]=u[i].replace(/\s+$/, '');
        if(i==u.length-1) w='';
        if(i==1) w=' '+heure+w;
        res+=u[i]+w;
    }
    document.getElementById('textarea2').value=res;
    </script>

  12. #12
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merci beaucoup

    Cependant, lorsque je valide plusieurs fois le bouton, il me duplique l'heure comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne suspendue à: 12h00. 12h00.
    Sais-tu comment remédier à ce problème ?

  13. #13
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je me suis mal exprimé

    Lorsque je mets à jour les données de t1 vers t2 la première fois, tout ce passe bien.
    Si je modifie à nouveau t1, l'information se duplique juste à coté de celle mis à jour la première fois. Il faudrait qu'elle remplace la valeur existante.

    Une idée ?

    Merci

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Par défaut
    Hello

    Un petit message alors que je suis en cours

    Essayez ça, même si je n'ai pas ici les moyens de tester ce que j'ai écrit :
    Je testerai en rentrant ce soir

    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
    <script type="text/javascript">
    var contenu=document.getElementById('textarea1').value;
    var t=contenu.split('\n')[1].split('à: ');
    var heure=t[1];
    var resultat=document.getElementById('textarea2').value, res='';
    var u=resultat.split('\n');
    for(var i=0; i<u.length; i++) {
        var w='\n';
        u[i]=u[i].replace(/^\s+/, '')
        u[i]=u[i].replace(/\s+$/, '');
        if(i==u.length-1) w='';
        if(i==1) {
            u[i]=u[i].split('à: ')[0].replace('à:', '')+'à:';
            w=' '+heure+w;
        }
        res+=u[i]+w;
    }
    document.getElementById('textarea2').value=res;
    </script>
    Edit: J'ai corrigé. =)

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    heu il suffirait de concaténer integralement le contenu de la seconde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var res="Ligne suspendue à: "
    res+= resultat du regEXp
    res+= '\nMerci."
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  16. #16
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merci beaucoup pour la correction de ton code

    J'ai une toute dernière question concernant le sujet de ce topic.

    Je vais redonner l'exemple, ce sera plus simple:

    Balise t1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intervention technique (mobile dispo)
    Mobile: Nokia N95.
    Dysfonctionnement(s): problème de haut-parleurs/micro
    Balise t2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intervention technique (N2 injoiniable)
    Mobile: Nokia N95.
    Dysfonctionnement(s): undefined
    Balise t3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intervention technique (prise de rendez-vous)
    Mobile: Nokia N95.
    Dysfonctionnement(s): undefined
    En gros, je n'arrive pas à insérer une deuxième information. J'obtiens un "undefined"

    Voici le code:
    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
    function intervention_technique()
    {
        var content=document.getElementById('t1').value;
        var t=content.split('\n')[1].split('Mobile: ');
        var d=content.split('\n')[2].split('Dysfonctionnement(s): ');
        var intervention_technique1=t[1];
        var intervention_technique2=d[2];
        var textarea=['t3','t4']
        for (var i_tem = 0; i_tem < textarea.length; i_tem++) {
            var result=document.getElementById(textarea[i_tem]).value, res='';
            var u=result.split('\n');
                for(var i=0; i<u.length; i++) {
                    var w='\n';
                    u[i]=u[i].replace(/^\s+/, '')
                    u[i]=u[i].replace(/\s+$/, '');
                    if(i==u.length-1) w='';
                    if(i==1) {
                        u[i]=u[i].split('Mobile: ')[0].replace('Mobile:', '')+'Mobile:';
                        w=' '+intervention_technique1+w;
                    }
                    if(i==2) {
                        u[i]=u[i].split('Dysfonctionnement(s): ')[0].replace('Dysfonctionnement(s):', '')+'Dysfonctionnement(s):';
                        w=' '+intervention_technique2+w;
                    }
                    res+=u[i]+w;
                }
                document.getElementById(textarea[i_tem]).value=res;
                document.getElementById('update').style.display="none";
        }
    }
    Merci d'avance de vos réponses

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Par défaut
    Oui, en fait il aurait été plus sage de ma part de commenter le code.
    Je vais l'expliquer pas à pas, je crois avoir trouvé l'erreur. ^^'

    Je vais tester. Edit : ça a l'air de fonctionner. =)

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    function intervention_technique()
    {
        // On récupère le contenu du textarea n°1
        var content=document.getElementById('t1').value;
        // On sépare chaque ligne du textarea, et on coupe la ligne 2 (index [1]) à partir de 'Mobile :' ici.
        var t=content.split('\n')[1].split('Mobile: ');
        // Le dysfonctionnement est effectivement sur la ligne 3 (index [2]), ça c'est bon
        var d=content.split('\n')[2].split('Dysfonctionnement(s): ');
     
        // Les résultats à insérer sont dans les parties de la ligne après 'Mobile:'
        // On a déjà ces lignes coupées, on récupère donc toute la partie après 'Mobile:'
        var intervention_technique1=t[1];
        var intervention_technique2=d[1]; // ici il fallait donc mettre l'index 1 pour récupérer après 'Dysfonctionnement(s):'
     
        // Donc, pour tous les textareas visés où il faut mettre les infos :
        var textarea=['t3','t4'];
        for (var i_tem = 0; i_tem < textarea.length; i_tem++) {
            // On récupère le contenu du textarea traité et on initialise un résultat final
            var result=document.getElementById(textarea[i_tem]).value, res='';
     
            // On découpe le contenu du textarea actuel en lignes
            var u=result.split('\n');
                // Donc pour chaque ligne, on va...
                for(var i=0; i<u.length; i++) {
                    // Récupérer la fin de la ligne
                    var w='\n';
     
                    // Enlever des espaces en début/en fin de lignes qui ne servent à rien et risqueraient de fausser l'affichage final (bug n°1 je crois)
                    u[i]=u[i].replace(/^\s+/, '')
                    u[i]=u[i].replace(/\s+$/, '');
     
                    // Si la ligne est la dernière, on ne va pas récupérer la fin de la ligne
                    if(i==u.length-1) w='';
                    // Si c'est la seconde ligne du textarea
                    if(i==1) {
                        // On remplace la seconde partie de la ligne par le résultat trouvé en début de fonction
                        u[i]=u[i].split('Mobile: ')[0].replace('Mobile:', '')+'Mobile:';
                        w=' '+intervention_technique1+w;
                    }
                    // Si c'est la troisième ligne du textarea
                    if(i==2) {
                        // On remplace la fin de la ligne par le résultat trouvé en début de fonction ici aussi
                        u[i]=u[i].split('Dysfonctionnement(s): ')[0].replace('Dysfonctionnement(s):', '')+'Dysfonctionnement(s):';
                        w=' '+intervention_technique2+w;
                    }
                    // On ajoute la ligne au résultat final
                    res+=u[i]+w;
                }
                // On met à jour le textarea traité
                document.getElementById(textarea[i_tem]).value=res;
                // On cache un bidule (penser à utiliser aussi document.getElementById('update').style.visibility="hidden";, c'est mieux les deux méthodes à la fois je crois. :) )
                document.getElementById('update').style.display="none";
        }
    }

  18. #18
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/05/2015, 18h44
  2. Réponses: 9
    Dernier message: 10/02/2015, 09h50
  3. copie des données d'un champ vers un autre
    Par cvlpj dans le forum IHM
    Réponses: 10
    Dernier message: 26/12/2006, 22h15
  4. copie données d'une table vers une autre
    Par wasaa dans le forum Access
    Réponses: 5
    Dernier message: 14/09/2006, 17h04
  5. Réponses: 35
    Dernier message: 18/05/2006, 18h30

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