CosmicAline
Messages postés13Date d'inscriptiondimanche 9 mai 2004StatutMembreDernière intervention29 novembre 2012
-
1 févr. 2011 à 15:06
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 2013
-
28 avril 2011 à 12:55
Hello
Je suis en train de me faire un petit utilitaire. Généralement tout fonctionne.
Par contre dans la liste des résultats j'ai plusieurs fois les mêmes valeurs qui reviennent, savez comment annuler cette affichage ?
Ci dessous le code:
<html>
<head>
<script type="Text/JavaScript">
function valider()
{
var valeur = document.choisir.animID;
var tmp="";
for (var i=0;i < valeur.length; i++)
{ if ( valeur[i].checked )
{ tmp+=""+valeur[i].value; }
}
document.getElementById('elmID').innerHTML=tmp;
}
</script>
</head>
<form id='choisir' name='choisir' method=get action="javascript:void(0);"onSubmit="valider(); return false;">
Tous les chiens
Labrador
Boxer
Tous les chats
Siamois
</form>
Votre choix ci-dessous
</html>
Comme résultat ca pourrait me donner ca:
cat=chien;scat=chien;cat=chien;scat=labrador;cat=chien;scat=boxer;
J'aurais besoin que cat=chien n'apparaisse qu'une fois.
J'ai pensé a changer les valeurs mais malheureusement si je coche que labrador j'ai cat=chien qui doit apparaitre...
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 1 févr. 2011 à 16:34
Bien le bonjour, j'ai bien une solution mais elle n'est pas des plus propres (à mon goût).
function valider()
{
var valeur = document.choisir.animID;
var tmp="";
for (var i=0;i < valeur.length; i++)
{
if ( valeur[i].checked ){
// découpage de la valeur obtenue:
// première chose, on supprime le ; à la fin.
var val = valeur[i].value.substring(0, valeur[i].value.length-1);
// Maintenant on peu splitter la chaine de résultat en fonction de ;, on obtient un enregistrement du type: ["cat=chien", "scat=chien"]...
var splitValue = val.split(";");
// Parcours la liste splittée
for ( var j=0; j< splitValue.length; j++){
// Si la chaine de résultat ne contient pas la valeur en cours de test, on l'ajoute.
if ( tmp.indexOf (splitValue[j]) ==-1){
// Ajoute à la suite de la chaine.
tmp += splitValue[j]+";";
}
}
}
}
document.getElementById('elmID').innerHTML=tmp;
}
Mais cela réponds à la question.
je pense qu'il doit y avoir plus simple, mais je n'ai hélas pas beaucoup d'idée aujourd'hui...
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 28 avril 2011 à 12:55
Salut,
J'écris directement la soluce sous forme de code pour aller plus vite :
// soit output la variable qui contient ta chaîne non traitée
var output = "cat=chien,scat=...";
// on détermine les modifications à apporter
var forreplace = "";
// soit chk1, chk2 et chk3 tes 3 CheckBoxes
if (chk1.checked) forreplace += " and us=11";
if (chk2.checked) forreplace += " and us=12";
if (chk3.checked) forreplace += " and us=13";
// s'il existe bien des modif à apporter on transforme alors la chaîne
if (forreplace !"") output output.replace(/,/g, forreplace + ",");