Accueil > Forum > > > > Controles sur des <select>
Controles sur des <select>
dimanche 2 mai 2010 à 15:00:41 |
Controles sur des <select>

harmonyk
|
Bonjour !
Je suis confronté à un problème avec une fonction Javascript, je ne sais pas comment la tourner...
J'ai un formulaire, avec 36 selects (oui je sais ^^) organisés par lots de 4 (donc 9 lignes de 4 selects).
Pour chaque select il y a 4 options (1,2,3,4) pour "évaluer" la préférence du select en cours.
J'ai une fonction qui permet de passer à la ligne suivante après le clic sur un bouton.
Mon but serait ici de vérifier que la ligne concernée comporte 4 valeurs différentes (donc de 1 à 4).
J'arrive très bien à coder un script qui permet de le faire pour la 1ère ligne par exemple, mais il m'en reste 8, et donc ca serait très répétitif de recoder la même chose 9 fois...
Voici mon script pour vérifier la 1ere ligne (m1 m2 m3 et m4 correspondent aux selects):
Code Javascript :
function controlerTest(form)
{
var ligne = (form.m1.value)*(form.m2.value)*(form.m3.value)*(form.m4.value);
if (ligne!=24)
{
alert (ligne+" à la place de 24");
form.m1.focus();
return false;
}
}
Je pense (et j'ai énormément cherché) qu'il faudrait que je fasse ce controle dans la fonction qui permet de passer à la ligne suivante, voir ci-dessous :
Code Javascript : function suivante(id)
{
var ligne = 'ligne'+id;
var suivante = 'ligne'+(id+1);
var trligne = 'trligne'+id;
var trsuivant = 'trligne'+(id+1);
document.getElementById(ligne).style.display='none';
document.getElementById(trligne).style.display='none';
if (suivante!="ligne10")
document.getElementById(suivante).style.display='block';
else
{
document.getElementById("submitTest").style.display='block';
document.getElementById("testForm").innerHTML="Test terminé, vous pouvez maintenant calculer vos résultats";
}
document.getElementById(trsuivant).style.display='block';
}
En sachant que m1 m2 m3 et m4 correspondent aux colonnes et (id) à la ligne, comment coder tout ca ensemble?
Tel est ma question :)
|
|
dimanche 2 mai 2010 à 15:49:26 |
Re : Controles sur des <select>

DARKSIDIOUS
|
Salut,
Fait une fonction qui prend en paramètre tes 4 select :
function controlerTest(m1, m2, m3, m4)
{
var ligne = (m1.value)*(m2.value)*(m3.value)*(m4.value);
if (ligne!=24)
{
alert (ligne+" à la place de 24");
m1.focus();
return false;
}
}
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
|
|
dimanche 2 mai 2010 à 15:59:35 |
Re : Controles sur des <select>

harmonyk
|
Merci de ta réponse =)
Alors je pense pas que ce soit possible de les passer ainsi en paramètre.
Bon c'est de ma faute je n'ai pas posté le script php/html correspondant :
Code PHP :
<!-- ...début formulaire ... -->
<table>
<?php
$idMot=1;
for ($ligne=1; $ligne<10; $ligne++)
{
if ($ligne==1)
{
echo '<tr id="trligne'.$ligne.'" style="display:block;">'."\n".'<td><input type="button" name="suivant" id="ligneSuivante" value="Ligne suivante" onclick="suivante('.$ligne.');" /></td>'."\n".'</tr>'."\n";
echo '<tr id="ligne'.$ligne.'" style="display:block;">'."\n".'<td>'.$ligne.' -> </td>'."\n".'';
}
else
{
echo '<tr id="trligne'.$ligne.'" style="display:none;">'."\n".'<td><input type="button" name="suivant" id="ligneSuivante" value="Ligne suivante" onclick="suivante('.$ligne.');" /></td>'."\n".'</tr>'."\n";
echo '<tr id="ligne'.$ligne.'" style="display:none;">'."\n".'<td>'.$ligne.' -> </td>'."\n".'';
}
for ($colonne=1; $colonne<5; $colonne++)
{
echo '<td><select name="mot['.$idMot.']" id="m'.$idMot.'">'."\n".'';
$idMot++;
for ($i=1; $i<5; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>'."\n".'';
}
echo '</select> '."\n".'';
afficheMot($ligne, $colonne);
echo '</td>'."\n".'';
}
echo "</tr>\n";
}
?>
</table>
<!-- ...fin du formulaire avec le submit etc ... -->
Donc comment récupérer l'idMot alors que quand j'appelle la fonction, je ne suis pas encore dans la boucle qui affiche les colonnes ?
|
|
dimanche 2 mai 2010 à 16:19:34 |
Re : Controles sur des <select>

DARKSIDIOUS
|
Salut,
Récupère tes select par des GetElementById (remplice tes idMot par la valeur de ta variable php:
Code Javascript :
controlerTest(document.getElementById('m'+$idMot1), document.getElementById('m'+$idMot2), document.getElementById('m'+$idMot3), document.getElementById('m'+$idMot4));
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
|
|
dimanche 2 mai 2010 à 16:37:27 |
Re : Controles sur des <select>

harmonyk
|
Oui ok, mais c'est justement mon soucis, il y a 36 $idmot xD
J'ai codé en une seule fonction qui verifie le produit des id des 4 mots présents sur la ligne affichée, et si true j'affiche la ligne d'après:
Code Javascript :
function suivante(id)
{
if (id==1)
{
mot1= document.getElementById("m1").value;
mot2= document.getElementById("m2").value;
mot3= document.getElementById("m3").value;
mot4= document.getElementById("m4").value;
var ligne = mot1*mot2*mot3*mot4;
if (ligne!=24)
{
alert (ligne+" à la place de 24");
mot1.focus();
return false;
}
}
var ligne = 'ligne'+id;
var suivante = 'ligne'+(id+1);
var trligne = 'trligne'+id;
var trsuivant = 'trligne'+(id+1);
document.getElementById(ligne).style.display='none';
document.getElementById(trligne).style.display='none';
if (suivante!="ligne10")
{
document.getElementById(suivante).style.display='block';
document.getElementById(trsuivant).style.display='block';
}
else
{
document.getElementById("submitTest").style.display='block';
document.getElementById("testForm").innerHTML="Test terminé, vous pouvez maintenant calculer vos résultats";
}
}
Dur dur la boucle a trouver, si vraiment il faut en faire une 
|
|
dimanche 2 mai 2010 à 16:58:18 |
Re : Controles sur des <select>

DARKSIDIOUS
|
Salut,
Tu te prends vraiment la tête pour rien : le principe est de faire une fonction qui teste si les 4 selects que tu lui passe sont corrects :
Code Javascript :
function controlerTest(m1, m2, m3, m4)
{
var ligne = (document.getElementById(m1).value)*(document.getElementById(m2).value)*(document.getElementById(m3).value)*(document.getElementById(m4).value);
if (ligne!=24)
{
alert (ligne+" à la place de 24");
document.getElementById(m1).focus();
return false;
}
}
et tu l'appelle avec chaque ligne :
Code Javascript :
var ok = false;
for (var i = 0; i < 10; i++) {
if (!controlerTest('m' + (i * 4 + 1), 'm' + (i * 4 + 2), 'm' + (i * 4 + 3), 'm' + (i * 4 + 4))) {
ok=false;
break;
}
}
if (ok) {
// faire le traitement si les lignes sont ok
}
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
|
|
dimanche 2 mai 2010 à 18:41:55 |
Re : Controles sur des <select>

harmonyk
|
Effectivement c'est déjà plus propre, on sent l'expérience =)
La fonction fonctionne bien si var ligne!=24
Par contre je n'arrive pas à passer ok à true, et pourtant var ligne est égal à 24.
Je poste la fonction au complet au cas ou :
Code Javascript :
function controlerTest(m1, m2, m3, m4)
{
var ligne = (document.getElementById(m1).value)*(document.getElementById(m2).value)*(document.getElementById(m3).value)*(document.getElementById(m4).value);
if (ligne!=24)
{
alert (ligne+" à la place de 24");
document.getElementById(m1).focus();
return false;
}
}
function suivante(id)
{
var ok = false;
for (var i = 0; i < 10; i++)
{
if (!controlerTest('m' + (i * 4 + 1), 'm' + (i * 4 + 2), 'm' + (i * 4 + 3), 'm' + (i * 4 + 4)))
{
ok=false;
break;
}
}
if (ok)
{
alert('ok');
var ligne = 'ligne'+id;
var suivante = 'ligne'+(id+1);
var trligne = 'trligne'+id;
var trsuivant = 'trligne'+(id+1);
document.getElementById(ligne).style.display='none';
document.getElementById(trligne).style.display='none';
if (suivante!="ligne10")
{
document.getElementById(suivante).style.display='block';
document.getElementById(trsuivant).style.display='block';
}
else
{
document.getElementById("submitTest").style.display='block';
document.getElementById("testForm").innerHTML="Test terminé, vous pouvez maintenant calculer vos résultats";
}
}
else alert('oups');
}
|
|
dimanche 2 mai 2010 à 18:58:02 |
Re : Controles sur des <select>

DARKSIDIOUS
|
Salut,
Ah, petite bourde dans mon code : faut initialiser ok à true et non à false bien sûr :
Code Javascript :
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
|
|
dimanche 2 mai 2010 à 19:21:34 |
Re : Controles sur des <select>

harmonyk
|
Oui j'ai testé mais non toujours false 
|
|
dimanche 2 mai 2010 à 19:29:11 |
Re : Controles sur des <select>

DARKSIDIOUS
|
Salut,
Si tu as modifié l'initialisation de la variable, et que tes combo ont les bonnes valeurs, y'a pas de raisons qu'il reste à true.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
|
|
Cette discussion est classée dans : ligne, form, id, document, suivante
Répondre à ce message
Sujets en rapport avec ce message
envoi d'un form [ par laurent98 ]
comment changerla propriete "action" d'un formje fais :function accept() { document.form.action.value="./valid2.php?a=accept"; document.form.submit();
Y a un problême. [ par sschupp ]
Date function verif() { res = false res2 = true if (this.form.annee1 > this.form.annee2) return res; if (window.document.f
Mozilla et position d'un <div> [ par philagui ]
Bonjour,Voila j'utilise le script suivant pour positionner et afficher quelque chose sur une page:function show(calque, id) { document.getElementById(
cellules d'un tableau qui changent de couleur [ par hella71 ]
Merci Vous trouverez ci apres le scripttout va bien sur iexplorer mais sur netscape ca marche pas Merciiiiiiiiiii pour votre aide.function cha
Modification d'un script. [ par jje ]
J'ai telecharge un script sur le site qui permet de faire des menus deroulants interactifs. il est dispo ici http://javascriptfr.com/code.aspx?ID=1614
Recuperation d'un POST d'un popup vers une frame de la fenetre ki a ouvert le popup [ par Petiout2 ]
bonjour,j'aimerai recuperer un post d'un popup, et renvoyé ces informations vers la fenetre mere ki a appelé le popupj'ai essayé ca : function verif
Redirection [ par massacr ]
Bonjour, je voudrais faire un compte à rebours avec un bouton démarrer et un autre arreter.Le bouton démarrer marche bien mais lorsque que l'on clique
className la ligne de code mystère [ par sapakus ]
Bonjour, Au tout début d'un fichier .js trés trés long réalisé par un chevronné professionnel de la programmation web, j'ai trouvé cette ligne de comm
appendChild [ par bultez ]
buldans le script suivantappendChild ajoute bien la "ligne 2"mais font et br .. pas pris en compte : s'affichent comme du texteje fais quelle erreur ?
Sauver un fichier en javascript avec des longues lignes [ par rkampf ]
Je veux sauver le texte d'une page dans un fichier que l'utilisateur choisit.Lors de l'affichage à l'écran tout va bien, le fichier s'enregistre, mail
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|