Javascript multiedition de texte et concatenation [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
[B]Bonjour,

J'utilise le code suivant pour afficher du texte en bas de page. Ce texte qui s'affiche est celui que l'utilisateur envoie dans une textarea. Enfin, lorsque l'utilisateur supprime le contenu de la textarea, le texte en bas de page disparait./B

[I]<html>
<head>
<script language="javascript">
function ecrire(texte) {
document.getElementById('url').innerHTML="Resultat : "+texte;
}
</script>
</head>

Resultat :

/I

[B]
Voici mon but : faire en sorte que le texte reste en fin de page après écrasement de la saisie par du nouveau texte : BLABLA2 est envoyé dans la textarea et écrase BLABLA1. Or, je souhaite que BLABLA2 écrase le contenu de la zone de texte, MAIS s'ajoute à BLABLA1 copié en bas de page.

Résultat souhaité : en bas de page : BLABLA1 + BLABLA2 + etc.
Méthode proposé : je sèche. Je pensais à insérer une balise en bas de page par exemple @@@, et faire que le code écrase uniquement @@@ avec BLABLA 1 ou BLABLA2, de sorte qu'on insère toujours à la suite sans écraser.
(ou une autre méthode)

Quelqu'un pourrait il m'aider à faire ça, ce serait formidable !!
Je ne maîtrise pas javascript.

et un GROS MERCI !!!!
/B

20 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>tu aurais une idée pourquoi la page redevient toute blanche ?

ben... j'ai expliqué ( action )
le formulaire est envoyé à cette page, donc elle est chargée,
avec la page comme à l'origine...
( même si c'est la "même page" )

tu transmets ce formulaire pourquoi en faire ?
ne le transmet pas ! ne fais pas le submit.... non ?

[mon Site][M'écrire]Bul
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
bonjour
pour écraser : toto.innerHTML="ce qu'on veut";
pour ajouter : toto.innerHTML+="n'importe quoi";
                    mais si on ne sait pas toto.innerHTML=toto.innerHTML+"n'importe quoi";
                    ça marche aussi....
si j'ai compris la question....

Cordialement

          [mon Site] [M'écrire] Bul         
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

MERCI de votre aide !!!



Alors grace à vous j'ai pu faire le pas suivant. Ca fonctionne, mon code s'ajoute à la suite du précédent.



Pour optimiser j'ai ajouté un bouton Send. J'aimerais qu'il ait pour fonction de vider la barre de saisie (car manuellement la sélection Ctrl A du contenu réutilise la fonction donc le texte s'écrit x2, x3 dans la zone résultat) et éventuellement faire appel à la fonction de copie, puis effacer le contenu de la zone de saisie.
Càd en résumé : soit quand je clique sur le bouton, (le contenu a déjà été copié) la barre de saisie se vide.
Soit quand je clique sur le bouton, le contenu est copié, puis la barre de saisie se vide.



Voici mon code actuel :



<html>
<head>
<script language="javascript">
function ecrire(texte) {
document.getElementById('url').innerHTML+=texte;
}
</script>
</head>




<form name="form1" method="post" action="">
 
  
</form>
Resultat :





J'aimerais bien y arriver seul mais je ne suis pas assez expérimenté pour coder une sélection + suppression de la zone. Quelqu'un aurait-il une idée ?



Encore merci de votre aide !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
pour écraser : toto.innerHTML="ce qu'on veut";
pour ajouter : toto.innerHTML+="n'importe quoi";
pour effacer : toto.innerHTML="";

          [mon Site] [M'écrire] Bul        
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Alors j'ai un probleme avec ma fonction. OnKeyUp.
En fait je voudrais procéder par copier coller.
Mon texte n'est copié que lorsqu'une touche est relachée. En conséquence ce script ne fonctionne plus. Y a t il une fonction qui permette de capter le texte collé (une seule fois), sans qu'une touche soit pressée, ou bien de le capter uniquement lorsqu'on va appuyer sur un bouton Envoyer ?

Merci de votre aide, je sèche.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
faut acheter une doc.
celle de selfHTML ? ( gratis, téléchargeable, en français )

          [mon Site] [M'écrire]  Bul         
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

J'ai tenté d'utiliser un bouton envoyer. Or je ne connais pas de fonction javascript qui permette de faire que l'appui sur un bouton envoie le texte dans la zone cible.

Alors ces derniers jours, j'ai tenté par plusieurs moyens d'insérer la fonction dans mon bouton, mais ma page disparaissait et je ne suis arrivé à aucun résultat !!!

Ca me gonfle parce que je suis sûr que ça se joue à un cheveu mais je n'y parviens pas.

Voici mon code :

[I]
<! form name="form1" method="post" action="">
 
   <! input type="submit" name="Submit" value="Envoyer">
</form>

Resultat :

/I

J'ai donc essayé :

   
   
Resultat :

J'ai autorisé le controle active x mais malheureusement rien n'apparait lors du clic. Je ne comprends pas, alors je vais continuer de chercher. Si vous avez le coup d'oeil pour détecter d'où vient mon erreur, merci pour tout petit coup de pouce !
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Bonjour,

J'ai finalement trouvé ainsi :

    

Cependant il me reste une dernière étape pour résoudre mon probleme :
J'ai besoin d'envoyer un saut de ligne après chaque envoi de texte.
J'ai cherché sur Internet, puis essayé d'insérer
, et "\n" mais sans résultat. Quelqu'un pourrait il me permettre de trouver la solution ?

Merci !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>Or je ne connais pas de fonction javascript qui permette de faire que
>>l'appui sur un bouton envoie le texte dans la zone cible.

c'est pas ça !
tu a un évênement onclick, qui déclenche du javascript,
c'est dans ce javascript que tu programmes la copie
du texte vers la zone cible.
ne comptes pas sur un truc qui ferait automatiquement. ça n'existe pas !
faut que tu le fasses !

   
   
Resultat :

tu essayes d'inventer je ne sais pas quoi.....

copier() : c'est une function... où est-elle ? que fait-elle ?
this.form.submit()  : ça soumettait le formulaire, or il n'y en a pas !

sur le onclick tu veux faire quoi ?
mettre le contenu de la zone saisie dans le div
fais le !
le contenu de la zone saisie c'est "ta_zone_de_saisie".value
( quand je dis "ta_zone_de_saisie"  c'est la balise input text
   à la quelle tu dois d'adresser par document.name_du_formulaire.name_de_la_zone_de_saisie
   s'il c'est dans un formulaire qui a pour "name name_du_formulaire" et que ce champs
    a pour name "name_de_la_zone_de_saisie"
   ou avec document.getElementById("id_de_la_zone_de_saisie")
   si le champ de saisie a pour ID "id_de_la_zone_de_saisie"
le div c'est "ton_div".innerHTML
   avec document.getElementById("ton_div") si le div a ID="ton_div"

          [mon Site] [M'écrire] Bul         
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Ok Merci pour ces explications détaillées. J'ai passé mon script au correctif,et sauf erreur de ma part ça semble tout à fait correspondre. Donc sous IE ça marche parfaitement. Mais sous firefox 3 le bouton envoyer ne répond pas...

Que faire ?
J'ai cherché à autoriser mais le script est coincé : j'appuie sur Envoyer, ça ne fait rien, pourtant sous IE ça marche parfaitement.

Je rappelle la structure de mon script actuel, vous pouvez tester directement en copiant ce script :

<html>
<head>
<script language="javascript">
function ecrire(texte) {
document.getElementById('url').innerHTML+=texte;
}
</script>
</head>

 
   
/>

</html>

Nous sommes à un cheveu de la réussite, il suffit de débloquer firefox... help !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
il me semble avoir donné la "bonne syntaxe", que tu ne respectes pas....

IE sait retrouver un élément par son name ou son id
quel que soit son "emplacement" et remplace l'iD par
le name si nécessaire ( et inversement )
FF ne fait pas.
si on veut utiliser le name, il faut que le champs soit dans un formulaire
<form name="frm"....
       
en rouge ça ne peut pas fonctionner ! il n'y a pas de formulaire ( balise form ) !
( déjà dit ça aussi... non ? )

          [mon Site] [M'écrire] Bul         
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Bonjour Bul3 c'est Grobabar,

Je te remercie pour ton aide très précieuse ! J'ai repris vos explications avec toute ma concentration et j'ai tenté une amélioration. J'ai compris que Firefox ne gère pas aussi bien les ID et NAME que IE. Personnellement je ne fais pa la différence entre un ID et un NAME. J'ai compris que j'utilisais un bouton de formulaire qui ne pouvait fonctionner sans formulaire. (lol ça paraît tellement bete à dire !)
J'ai compris que j'utilisais des fonctions qui n'allaient pas ensemble car certaines vont avec des formulaires et d'autres pas.
D'après vos explications j'ai tenté un paquet de changements, mais je n'ai pas réussi à avoir le moindre résultat (meme sous IE). Je vous transmets la version qui me semble la plus corresapondante à vos conseils pour obtenir l'affichage du texte saisi dans la zone du formulaire, en tant que résultat en bas de page, lorsqu'on appuie sur le bouton Envoyer.

Je rame comme un bon vieux pac qui tourne sous 3.1, merci beaucoup pour ton aide !

<html>
<head>
<script language="javascript">
function ecrire(texte) {
document.getElementById("resultat").innerHTML+=texte;
}
</script>
</head>

<form name="frm">
 
   
</form>

</html>
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>je n'ai pas réussi à avoir le moindre résultat
si si ( l'impératrice )... tout fonctionne.
il n'y a plus d'erreurs avec aucun navigateurs : bravo.

dans l'ordre, ce qui est fait quand on clique sur le bouton "envoyer" :
_ la zone saisie est affiché dans le div [ functionn ecrire ]
_ puis le formulaire est envoyé à la page dans action= du formulaire,
       comme ici il n'y en a pas, c'est envoyé à la même page.
       elle donc rechargée et bien sûr la zone de saisie et le div
       sont réinitialisés comme au 1er lancement

          [mon Site] [M'écrire]  Bul         
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Ca alors ! c'est sensé fonctionner ?
Je ne doute pas de ce que tu me dis, mais chez moi IE et Firefox ne m'ouvrent meme pas la fenetre de saisie, j'ai une page blanche. Pourtant j'ai autorisé le script. Je suis largué... aurais tu une seconde pour tester si le script que j'ai indiqué fonctionne chez toi sous IE et FF ?
Mystère...
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Rectification (probleme de sauvegarde) !
Alors en effet c'est formidable, FFox récupère le contenu ! Bravo !!

Par contre on a deux problemes avec cette méthode de formulaires :
Lorsque j'appuie sur envoyer le texte apparaît une demi seconde, puis la page est raffraichie aussitôt et retourne à vide.  Donc le texte est affiché, mais impossible ni de le conserver affiché sur la page, ni d'y ajouter de la suite.

Egalement, comme on utilise un formulaire je ne peux pas faire afficher de choses telles que des balises html, ou des signes avancés, et ça me pose un probleme majeur.

Help Bul3, existe t il une solution intermédiaire entre le bouton envoyer qui est une super idée pour faire une méthode propre, et la copie de texte en brut pour conserver les signes et balises html ?

Selon moi on a plus de chances en utilisant du texte copé collé betement, mais avec une fonction propre qui utiliserait un bouton d'envoi ou un système similaire, sans formulaire. Est-ce possible ?

L'objectif reste simple, envoyer un paragraphe dans la zone de saisie, appuyer sur un bouton pour lancer le collage, répéter l'action à volonté. Existe t il un langage permettant de faire un formulaire similaire traitant les caractères avancés ?

 je croise les moustaches
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

C'est quand meme dingue...
Est-ce qu'avant de partir sur autre chose tu aurais une idée pourquoi la page redevient toute blanche ? Je cherche diverses façons de la stopper en incluant un stop dans le script. Galère galère, heureusement que je ne suis pas seul pour faire ça.
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Presque !


C'est vraiment super que grace à ton aide on soit si près du but ! J'ai essayé d'envoyer une balise stop; stop(); et la correcte : void window.stop();

Il y a un essai où ça a fonctionné, mais le reste du temps, quand j'envoie un moyen ou gros paragraphe, la page charge pour le collage puis dès que le collage est terminé, la page se rafraichit quand meme et tout disparaît.

Voilà où j'en suis actuellement. Il y a ma balise stop dans le script, mais rien à faire... aurais tu un conseil ?

<html>
<head>
<script language="javascript">
function ecrire(texte) {
document.getElementById("resultat").innerHTML+=texte;
void window.stop();
}
</script>
</head>

<form name="frm">
 
   
</form>

</html>
Messages postés
18
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
5 décembre 2008

Ce que je cherche à faire est extremement basique : recevoir du texte dans la zone de saisie, l'afficher en bas de page en dynamique (sans base de données, sans enregistrement des données, juste l'afficher) et permettre que la répétition du processus s'ajoute au fur et à mesure à la suite du collage précédent.

Pour le submit :
Je remplace
onClick="ecrire(document.frm.txtN.value);this.form.submit()"
Par
onClick="ecrire(document.frm.txtN.value);this.form()"

Sous IE ça marche à merveille !
Sous Firefox, impossible d'ouvrir le fichier : "Une erreur s'est produite lors de l'envoi d'une commande au programme"
C'est très probablement parce que j'ai codé ça comme un porc.
Alors j'envoie ma page en FTP et là par contre Firefox me la lit, c'est bizarre non ?

Je tente ce que tu me dis et là... suspense...

Suspense !

Ca marche !!!!
ENFIN !

Quelle réussite, ça n'a pas été facile ! Heureusement que tu m'as aidé Bul3 !
Je te suis vraiment très reconnaissant !!
Au départ j'ai demandé de l'aide sur plusieurs forums et je n'en ai eu aucune aussi efficace que la tienne !

Merci beaucoup !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
crotte de biques, mais message furent perdu corps et bien
>>...onClick="ecrire(document.frm.txtN.value);this.form()"
certes...
mais que penses-tu que fasse this.form() ?
this, c'est le bouton submit,
form() devrait être une function.... qui n'existe pas !

quand tu as affiché ce que tu voulais   [ ecrire(document.frm.txtN.value); ]
que te resta-t-i à faire ? rien je pense...
alors ne fais plus rien, et tant qu'à faire pas appel à une fonction inexistante

>>ça n'a pas été facile !
ça ne l'est jamais !
sinon ce serait inintéressant et il n'y aurait pas
autant de personnes qui s'occuperaient de programmation .

>>Heureusement que tu m'as aidé Bul3 !
j'ai aiguillé rien de plus. tu as fait ( reste à finir ! )

          [mon Site] [M'écrire] Bul