Javascript qui me taquine

Résolu/Fermé
Thebuzz Messages postés 41 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 24 octobre 2010 - 3 sept. 2008 à 02:29
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 3 sept. 2008 à 15:26
Bonjour chers tous,

J'ai un petit script javascript qui m'ennuie et qui doit être tout simple. Je m'explique :

J'ai un champ texte, rempli par AJAX, et qui contient les exemples suivants avec un minimum de 3 mots :

1000 camions verts
1500 pommes vertes Bon

Je recherche le moyen de mettre dans 3 autres champs le découpage de mots par : 1er mot dans un champ, 2e mot dans un champ, 3e mot dans un champ. Mais si il y a 4 mots (second exemple), alors 1er mot dans un champ, 2e et 3e mot dans un champ, 4e et dernier mot dans un champ. Il me faut donc grouper les mots intermédiaires. Mon code ci-dessous comme début :

<script language="Javascript">
function perso() { 
    var texte_a_copier = document.getElementById("completion_select").value; 
    var mySplitResult = texte_a_copier.split(" ");
    for(i = 0; i < mySplitResult.length; i++) {
	document.getElementById("test").value = mySplitResult[0]; 
}
}
</script>


Merci de votre aide

4 réponses

pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 sept. 2008 à 02:46
En gros, il te faut le premier mot dans un champs, le dernier dans un autre, et tous les autres dans un troisième ?
Je ne vois pas où se trouve ton problème, ton code devrait te permettre de faire ça sans difficulté...

Edit :

En gros tu fais quelque chose comme ça :
<script language="Javascript">
function perso() { 
    var texte_a_copier = document.getElementById("completion_select").value; 
    var mySplitResult = texte_a_copier.split(" ");
    document.getElementById("champs1").value = mySplitResult[0];
    var tmp = "";
    for ( i = 1 ; i < mySplitResult.length - 1 ; ++i ) {
	tmp += mySplitResult[i]; 
    }
    document.getElementById("champs2").value = tmp;
    document.getElementById("champs3").value = mySplitResult[mySplitResult.length - 1];
}
</script>


Re-edit :

Il y a peut-être des erreurs de syntaxe, je ne connais pas (encore...) le Javascript, mais le principe est là.
0
Cher pyschopathe,

Je te remercie pour ta réponse qui est absolument ce que recherchait avec juste un petit bémole dans le formatage final :

document.getElementById("champs2").value = tmp;


L'affichage associe, comme dans mon exemple avec 1500 pommes vertes Bon, en pommesvertes au lieu de pommes vertes que je souhaiterait.

Je sais que l'on a découpé par espace, mais il faudrait pouvoir le reformater à l'arrivée.

Aurais-tu une idée ?

Il y a peut-être des erreurs de syntaxe, je ne connais pas (encore...) le Javascript, mais le principe est là.


C'est parfait pour un novice...

A+
0
Cher pyschopathe,

J'ai modifié mon code comme tel pour le formatage :
<script language="Javascript">
function perso() { 
    var texte_a_copier = document.getElementById("completion_select").value; 
    var mySplitResult = texte_a_copier.split(" ");
    document.getElementById("champs1").value = mySplitResult[0];
    var tmp = "";
    for ( i = 1 ; i < mySplitResult.length - 1 ; ++i ) {
	tmp += mySplitResult[i].replace(""," "); // modification apportée
    }
    document.getElementById("champs2").value = tmp;
    document.getElementById("champs3").value = mySplitResult[mySplitResult.length - 1];
}
</script>

Ce qui me donne maintenant, toujours selon mon exemple "1500 pommes vertes Bon", l'affichage de " pommes vertes".

Mais comme l'on peut le constater, un espace - le premier - s'est créé : " pommes vertes". Je désire supprimer ce premier espace récalcitrant afin d'obtenir au final "pommes vertes".

Merci de ton aide
0
Cher tous,

J'ai trouvé ce moyen et qui fonctionne pour remplacer le espaces :
<script language="Javascript">
function perso() { 
    var texte_a_copier = document.getElementById("completion_select").value; 
    var mySplitResult = texte_a_copier.split(" ");
    document.getElementById("champs1").value = mySplitResult[0];
    var tmp = "";
    for ( i = 1 ; i < mySplitResult.length - 1 ; ++i ) {
	tmp += mySplitResult[i].replace(""," "); // modification apportée
    }
    var regExpBeginning = /^\s+/;
    var regExpEnd       = /\s+$/;
    document.getElementById("champs2").value = tmptmp.replace(regExpBeginning, "").replace(regExpEnd, "");
    document.getElementById("champs3").value = mySplitResult[mySplitResult.length - 1];
}
</script>

Merci de votre aide

A+
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 sept. 2008 à 15:26
Désolé, pas pu me connecter avant.
Pour la solution à l'espace restant en première position, il suffit peut-être juste de copier la chaine dans une autre variable, à partir de l'indice 1 (et pas 0), ce sera sans doute moins lourd qu'utiliser un regex non ?

Enfin, comme je ne sais pas s'il existe une fonction pour faire ça, il faudra peut-être le faire dans une boucle... Il faudrait tester les performances entre les deux solutions...

Voilà, ravi d'avoir pu vous aider.
0