cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010
-
8 oct. 2007 à 10:25
cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010
-
8 oct. 2007 à 13:19
Bonjour,
voila j'ai un script qui me permet de basculer des elements d'une liste a l'autre, ca fonctionne mais je voudrais utilser non pas le nom mais l'ID de chaque select
car pour recuperer l'ensemble des elements envoyés sur ma page de traitement j'ai besoin de mettre comme nom "liste2[]" et non pas "liste2".
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 8 oct. 2007 à 12:54
Donc, on parle d'une nouvelle méthode alors ( youpi, je commence à me réveiller un peu ) :
<HTML><HEAD>
<SCRIPT LANGUAGE="JavaScript">
/**
* Déplacement
*
* @param _idListe1
* Identifiant de la première liste.
* @param _idListe2
* Identifiant de la deuxième liste.
*/
function Deplacer(_idListe1, _idListe2) {
var l1 = document.getElementById(_idListe1);
var l2 = document.getElementById(_idListe2);
if (l1.options.selectedIndex>=0 ) {
o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
l2.options[l2.options.length]=o;
l1.options[l1.options.selectedIndex]=null;
}
else{
alert("Aucune activité sélectionnée");
}
}
function submitForm ( _idListe ){
var liste1 = document.getElementById(_idListe );
// si une seule ligne ( alors pas de pays ) vue que la liste contient "----------------------";
if ( liste1.options.length ==1 ) {
alert ("Merci de renseigné un pays de destination");
return false;
}
// parcours tous les options de la liste.
var listeValue = "";
for (var i=0; i < liste1.options.length; i++){
listeValue += ";" + liste1.options[i].value;
}
// juste une alerte.
listeValue = listeValue.substr(1, listeValue.length);
alert (listeValue);
return true;
}
</SCRIPT>
</HEAD>
onClick ='Deplacer(document.formulaire["liste1[]"],document.formulaire["liste2[]"]);'
ça devrait aller mieux.
tu n'utilises pas un éditeur de texte à coloration syntaxique ?
avec NotePad++, on voit tout de suite ( des " en rouge, signe d'erreur )
cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010 8 oct. 2007 à 11:58
je viens d'essayer la technique de Zobibol, ca marche sauf que je suis obligé de reselectionner l'ensemble des elements de la liste2 pour les envoyer vers ma page de traitement.
moi ce que je voudrais C vraiment pouvoir envoyer l'integralité des elements de la liste 2, qu'ils soit selectionnés ou non.
comment porrais je faire pour remedier a cela ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 8 oct. 2007 à 12:13
>> reselectionner l'ensemble des elements de la liste2 pour les envoyer vers ma page de traitement
oui. ne sont envoyés que les option sélectionnés.
fait un boucle pour sélectionner toutes les lignes avant l'envoi.
le select.options[index].selected=true; ou "selected"; je ne sais plus
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 8 oct. 2007 à 12:18
Heu, toujours moi qui comprends toujours rien... ;o)
Bon, pour savoir le bouton "enlever", vide complètement la liste ( pas uniquement la ligne sélectionnée ) ?
Si tel est le cas il suffit d'integrer un booleen à la méthode Déplacer :
/**
* Déplacement
*
* @param _idListe1
* Identifiant de la première liste.
* @param _idListe2
* Identifiant de la deuxième liste.
* @param _clear
* booleen doit on vider la liste complète ?
*/
function Deplacer(_idListe1, _idListe2, _clear) {
var l1 = document.getElementById(_idListe1);
var l2 = document.getElementById(_idListe2);
if (l1.options.selectedIndex>=0 && !_clear) {
o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
l2.options[l2.options.length]=o;
l1.options[l1.options.selectedIndex]=null;
}
else if ( l1.options.selectedIndex>=0 && _clear){
while (l1.options.length>0){
o=new Option(l1.options[0].text,l1.options[0].value);
l2.options[l2.options.length]=o;
l1.options[0]=null;
}
}
else{
alert("Aucune activité sélectionnée");
}
}
sur "Ajouter" : onclick ="Déplacer( <gras>'liste1','liste2', false)"</gras>
sur "Enlever" : onclick ="Déplacer('liste2','liste1', true)"
Mais comme je ne sais pas si c'est ce qui est demander....
cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010 8 oct. 2007 à 12:39
merci zobibol pour ta reponse, mais j'ai du mal m'exprimer dans ma question, ... C pas l'ensemble des elements de la liste droite que je veux supprimer.
c'est que le problème qui se pose C que on doit pouvoir faire basculer les elements des deux listes sans probleme dans les deux sens (comme CT avant)
mais le soucis, C que si veux envoyer la liste des pays selectonné par l'internaute (qui'il a placé dans la liste 2) alors il est obliger de reselectionner l'ensemble des elements de la liste2 (ce qui parait compliquer a l'utilisation) donc l'ideal serait peut-être comme le proposait bultez de selectionner l'ensemble des elements quand on clique sur le bouton envoyer mais je n'y arrive pas
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 8 oct. 2007 à 13:08
ah ne tiens... on s'est croisés d'ailleurs.
il n'a pas tort de contrôler si des options existent
( peut-être l'option 0 ne sert à rien, ou il faut
commencer la sélection à l'index 1 )
je préfère utiliser onsubmit... mais bof...
<hr /> Cordialement Bul [mon Site] [M'écrire]
<hr />