Je m'énerveu contreu Internet Exploreur . Fonction qui marcheu pas

[Résolu]
Signaler
Messages postés
77
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006
-
Messages postés
77
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006
-
Bonjour tou l'monde



J'ai une fonction qui est bien et qui me sert à valider un formulaire.

Prenons depuis le début afin que vous compreniez bien


Je complète un champ formulaire <select> à l'aide d'un champ text
et une fonction toute bête. Ensuite, je contrôle si l'utilisateur à
entré entre 5 et 10 options, le formulaire peut être validé, sinon,
alert(' attention !!!').

Lorsque j'appuye sur mon joli bouton Valider, j'appelle une belle fonction qui est la suivante :

<script>

//liste est mon champ <select>

function checkmc(list) {//list = document.formulaire.liste

var nbdoption = (list.options.length-1);

if(nbdoption<5){

alert('Vous devez insérer au moins 5 options');

}

if(nbdoption>10){

alert('Vous pouvez insérer jusqu\'à 10 options. Veuillez en retirer');

}

if((nbdoption>=5)&&(nbdoption<=10)){

//si on a le bon nombre d'options, on
place les valeurs <option> dans des

for(var j=1; j<=nbdoption; j++){


soumission.eval('motfr'+j).value=list.options[j].value;//Internet
Explorer Bloque ici

}

soumission.submit();

}

}

</script>



Question pertinente : La méthode eval est elle la meilleure, si oui, elle ne semble pas marcher sur IE, si non existe-t'il un autre méthode.

Question moins pertinente : pourquoi microsoft =caca et tout le monde l'utilise ????



merci

13 réponses

Messages postés
48
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
8 septembre 2005

Pardon j'ai pas les idées claire ce matin.

et document.getElementById('liste').option[j].value ça marche pas ?
Messages postés
48
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
8 septembre 2005

1-utilises plutot les id de tes input pour y accèder :

document.getElementById('MonInput').value

2-l'accès aux valeur d'un select se fait comme ça :

this.form.elements['liste'].options[this.form.elements['liste'].selectedIndex].value

3-Je te conseillerai de faire une fonction qui retourne un booleen

et dans ton onsubmit="return mafonction();"

si elle retourne false cela bloque la soumission sinon le formulaire est validé.

j'espère que ça va t'aider
Messages postés
77
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006

mon problème est pas tout à fait ça.



En fait je suis dans ue boucle, si je fais ça :



soumission.motfr1.value=list.options1.value;

soumission.motfr2.value=list.options2.value;

soumission.motfr3.value=list.options3.value;

soumission.motfr4.value=list.options4.value;

etc ....



ça marche comme ça.

Mais la boucle a un intérêt, et j'aimerai m'en servir. Comment faire ici ??



merci
Messages postés
48
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
8 septembre 2005

ton soumission.motfr1 c'est un input de ton from soumission

exemple :

si motfr_i est l'id de mon input avec i de 1 à 5

j'y accède comme ça dans ma boucle :

document.getElementById('motfr_'+i).value;//marche avec tous les navigateurs



Pour ce qui est de l'accès à la liste, il arrive des fois la syntaxe que tu utilises ne fonctionne pas.

celle que je t'ai donné fonctionne également avec tous les nav.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

Question moins pertinente : pourquoi microsoft =caca et tout le monde l'utilise ????

Encore quelqu'un qui est incapable d'aligner 2 lignes ( élémentaires )
dans un langage et qui a l'outrecuidance de critiquer un OS.
[ ma réaction serait la même face à une attaque aussi lamentable
envers Unix/Linux ou des produits comme Mozilla... ]
Si les produits de Microsoft te font gerber à ce point là, ne les utilise
plus, il existe des alternatives superbes [ certaines open-sources,
des gratuites... ], nul ne viendra te critiquer.

Cordialement. Bul. Site[mailto:marcelBultez@Tiscali.fr Mail]
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
4
Salut!

Au lieu de :

soumission.eval('motfr'+j).value=list.options[j].value;//

Essai :

soumission.elements["motfr"+j].value=list.options[j].value;

A+, Ghislain
Messages postés
77
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006

Bultez, merci de ton ultra sérieux, pro microsoft ou pas, j'en ai rien à cirer du moment que ça tourne, mais je constate que microsoft m'a planté plus de fois...

>> quelqu'un qui est incapable d'aligner 2 lignes

>> Il y a les designer qui font un effort de coder proprement

>> Et il y a les codeur qui ont un sens inouï du mauvais goût et du manque d'effort de présentation de base
http://marcel-bultez.chez.tiscali.fr/PetitesAnnoncesGratuites/index.php (fait gaffe ici y'a une coquille dans le code)





Merci Ghislain, je m'en vais essayer ce bout de code tout de suite.
Messages postés
77
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006

Bon, j'ai essayé ta méthode Ghislain, sans réussite sous IE (firefox). Au risque de passer pour un nul (et je m'en excuse par avance d'utiliser ce forum pour accroître mes connaissances
), j'ai essayé la méthode de pymm

document.getElementById('motfr'+i).value;

et ça permet au navigateur de ne pas bloquer sur mon erreur, mais ne remplace pas mes valeurs. Il y a une partie de code que je n'arrive pas à convertir



document.getElementById('motfr'+j).value=document.liste.options[j].value;



J'ai essayé différentes syntaxes sans résultat.

Vous avez des idées ?

Merci
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Après avoir descendu Microsoft, je suis
très flatté que Tynmar s'en prenne à moi.
Bul. Site[mailto:marcelBultez@Tiscali.fr Mail]
Messages postés
48
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
8 septembre 2005

Je crois que ta fonction est mal pensée. après le test du nbdoption

il faut que tu parcours tout ton select pour trouvé les options selectionnée.

si une est selectionnée alors

document.getElementById('motfr'+
this.form.elements['liste'].selectedIndex)=this.form.elements['liste'].options[this.form.elements['liste'].selectedIndex].value(ou text)

pour le travail sur les listes, tu peux allé pour ici :

http://www.toutjavascript.com/savoir/savoir06_2.php3
Messages postés
77
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006

Non, c'est pas tout à fait ça. je ne veux pas savoir combien il y a
d'options sélectionnées. je veux savoir combien il y a d'options. Mais
ça marche, je sais combien il y a d'options. je veux placer toutes les valeurs de mes options dans des "input type hidden".



for(var j=1; j<=nbdoption; j++){

document.getElementById('motfr'+j).value=formulaire.listeen.options[j].value;

}

Ce qui ne marce pas ici c'est formulaire.listeen.options[j].value;

merci
Messages postés
48
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
8 septembre 2005

Pardon j'ai pas les idées claire ce matin.

et document.getElementById(liste).option[j].value ça marche pas ?
Messages postés
77
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006

Pfiou, tu avais écrit en tout petit la solution un peu plus haut pymm. il ne s'agit pas de value mais de text . J'aurai bien appris quand même. En tout cas, pas évident de faire des scripts compatibles IE, Firefox, Opera...



Merci beaucoup