Les Allergies
Alimentaires
Posez votre question Signaler

Javascript qui me taquine [Résolu]

Thebuzz 36Messages postés 27 avril 2007Date d'inscription 24 octobre 2010Dernière intervention - Dernière réponse le 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
Lire la suite 

Javascript qui me taquine »

Suggestions
5 réponses
Réponse
+0
moins plus
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à.
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
pyschopathe- 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.
Ajouter un commentaire
Ce document intitulé « Javascript qui me taquine » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?