begin process at 2012 05 29 10:15:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Divers

 > 

index d'un select dans un formulaire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

index d'un select dans un formulaire

lundi 4 décembre 2006 à 13:54:40 | index d'un select dans un formulaire

astridette

Bonjour,

j'ai un page html avec un tableau dans lequel sont présents plusieurs select. Ce tableau est contruit dynamiquement avec un ajouter ligne et un supprimer ligne.
J'ai trois select, select1,select2,select3. Quand je choisis l'option non dans le select1, je mets en disabled select2 et select3. J'appelle une fonction javascript avec this.
Mon problème est de savoir quel est l'index du select1 dans mon formulaire pour savoir quel select 2 et 3 je dois griser.
En gros mon code est celui ci (en php pour la partie html)
<table name="tableau">
<tr>
<td>
<select name="select1[]" onchange=griser(this)></select>
<select name="select2[]"></select>
<select name="select3[]"></select>
</td>
</tr>
</table>

En javascript
griser(this)
{
   document.frmPrincipal.elements[indiceduselect+1].disabled="disabled";

}

Comment trouver indiceduselect sachant que mon table peut contenir de 1 à n lignes.
Je ne peux pas utiliser l'ID car je suis susceptible de supprimer un ligne ou d'en ajouter.

Merci d'avance.

Astrid
lundi 4 décembre 2006 à 16:26:41 | Re : index d'un select dans un formulaire

lesdis

Je ne voit pas trop ce que tu veut faire mais si tu cherche a trouver quel est l'index selectionné dans ta liste, tu as la propriété selectedIndex qui te permettra de recupérer l'index et peut importe le nombre de lignes existantes.
lundi 4 décembre 2006 à 16:41:35 | Re : index d'un select dans un formulaire

astridette

ce n'est pas l'index de l'item sélectionné dans la liste mais l'index de mon select dans le formulaire.

Par exemple si j'ai ce code :
<form name=myform>
<select name=select1>
</select>
<select name=select2>
</select>
<select name=select3>
</select>
</form>
En javascript on accède aux différentes listes avec :
form.elements[0].name => select1
form.elements[1].name => select2 .....

Mon problème est que le nom de mon select est un tableau sous la forme nom[] et donc je ne connais pas l'index de mon select. Je voudrais donc le retrouver.

Est-ce plus clair ?

Merci d'avance.

Astrid
lundi 4 décembre 2006 à 17:32:56 | Re : index d'un select dans un formulaire

Marcial

Membre Club
slt,
Ce que tu demande est très simple et si tu avais chercher un peu
tu aurais trouvé facilement... Enfin...
Donc si j'ai bien compris, ce que tu veux c'est savoir quelle ligne
du select a été choisie par l'utilisateur...


var resultat=document.getElementById('TonSelect1').selectedIndex;


___________________________________________
Le plus grand des défauts de l'homme c'est de toujours
pointer un doigt accusateur... Mais jaimais devant un miroir... ___________________________________________
lundi 4 décembre 2006 à 17:54:34 | Re : index d'un select dans un formulaire

lesdis

si j'ai bien compris ce coup ci tu aimerais savoir qu'elle est l'index de ton select dans la collection d'éléments de ton form.

Je te propose ce code qui n'est qu'une facon de faire et pas forcement la meilleure :

<form name=myform>
<select name=select1 onclick='test(this);'>
</select>
<select name=select2>
</select>
<select name=select3>
</select>
</form>

<script language='javascript'>
function test(obj){
var x =0;
while(obj.parentNode.elements[x]){
    if (obj.parentNode.elements[x] == obj)
        alert('le select activé est l\'element n°' + x + ' du Form');
     
        x++;
    }
}
</script>

Bonne continuation en espérant avoir pu t'aider

lundi 4 décembre 2006 à 18:02:52 | Re : index d'un select dans un formulaire

PetoleTeam

Membre Club

B onjour...

j'opterais pour une solution du type
chaque SELECT de la ligne 1 a un ID du genre ID="L01_x" ou x est la position sur la ligne

ensuite dans la fonction
griser(this) tu récupère l'ID et sont index
var szID = this.ID;
var Pos  = szID.indeOf("_");
var szLigne;
//-- Récup Numéro ligne
if( Pos > -1){
  szLigne =
szID.substring( 0, Pos);
  //-- Reste a disabled les autres
  document.getElementById( szLigne+"_2).disabled= true;
  document.getElementById( szLigne+"_3).disabled= true;
}

ou un truc dans ce style
;0)
mardi 5 décembre 2006 à 09:03:25 | Re : index d'un select dans un formulaire

astridette

mon soucis c'est que le nom du select n'est pas clairement identifié puisqu'il est sous la forme nom[].
J'ai bien cherché avant de poser la question et je n'ai rien trouvé.
Pour l'idée des indice ce n'est pas possible car je suis amenée à reconstruire mon tableau avec mes select régulièrement ce serait vraiment trop galère de gérer des indices.

Je vais essayer la solution proposée par lesdis.

C'est seulement dommage que ce ne soit pas possible de trouver facilement l'index d'un objet dans un formulaire.

Merci à tous.

astrid
mardi 5 décembre 2006 à 13:47:42 | Re : index d'un select dans un formulaire

nickadele

Membre Club Administrateur CodeS-SourceS
astridette,

et si tu nous mettais le code que tu as déjà, ce serait peut-être plus simple pour :
1. comprendre ton souhait
2. te guider vers une solution

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
mardi 5 décembre 2006 à 14:32:16 | Re : index d'un select dans un formulaire

astridette

Voici une partie de mon code PHP où je construis mon tableau :

<table

id="tableau_weekend">

<thead>

<tr>

<th><?print$debut; ?></th>

<th><?print$fin; ?></th>

<th>&nbsp;</th>

</tr>

</thead>

<tfoot>

<tr>

<tdcolspan="3">

<br/>

<ahref="#"onclick="addLigneSched(this); return false;"/><?print$ajouter?></a>

</td>

</tr>

</tfoot>

<tbody>

<trstyle="display:none;"id="clone_weekend">

<td><?print$this->_selectHours("PLAGE_WEEKEND[]", "WEEKEND",''); ?></td>

<?print$this->_selectEnd("WEEKEND", '')?>

<trid="aucune"style="display:none;">

<tdcolspan="3"><b><?print trad("Aucune plage horaire d&eacute;finie");?></b></td>

</tr>

<?php

if ($this->currentDatas['WEEKEND'] == NULL)

{

print("<tr id=\"aucune\"><td colspan=\"3\"><b>");

print trad("Aucune plage horaire d&eacute;finie");

print("</b></td></tr>");

}

else

{

foreach($this->currentDatas['WEEKEND'] as$i => $values)

{

print("<tr><td>");

print$this->_selectHours("PLAGE_WEEKEND[]", "WEEKEND",$values["PLAGE"]);

print("</td>");

print$this->_selectEnd("WEEKEND", $values["HEURE_MIN"],$i);

}

}

?>

</tbody>

</table> 

function _selectHours($days, $hours, $res)

{

$options = array

(

"08_00_14_00" => "8h - 14h",

"12_00_14_00" => "12h - 14h",

"14_00_20_00" => "14h - 20h",

);

if($hours == "WEEKEND")

{

$options["09_00_19_00"] = "9h - 19h";

}

$html = "<SELECT NAME=\"".$days."\">\n";

foreach($optionsas$value => $title)

{

$html .= "<OPTION VALUE=\"$value\" ";

if($value == $res)

{

$html .= "SELECTED";

}

$html .= ">$title</OPTION>\n";

}

$html .= "</SELECT>";

return($html);

}


function _selectEnd($days, $hours)

{

$html = "<td><SELECT NAME=\"ARRET_".$days."[]\" onchange=\"changeArret(this);\">\n";

$html .= "<OPTION VALUE=\"yes\"";

if ($hours != NULL)

{

$html .= "coucou";

$heuremin = explode('_',$hours);

$html .= " SELECTED ";

$disabled = "";

}

$html .= ">".trad("Arr&ecirc;ter &agrave;")."</OPTION>\n";

$html .= "<OPTION VALUE=\"no\"";

if ($hours == NULL)

{

$html .= " SELECTED ";

$heuremin[0] = "14";

$heuremin[1] = "00";

}

$html .= ">".trad("Ne pas arr&ecirc;ter")."</OPTION></SELECT>\n";

$html .= "<SELECT NAME=\"HEURE_".$days."[]\">\n";

for ($j=0; $j<=23;$j++)

{

if ($j < 10)

{

$num="0".$j;

}

else

{

$num=$j;

}

$select = "";

if ($j == $heuremin[0])

{

$select = "SELECTED";

}

$html .= "<OPTION VALUE=\"".$num."\" ".$select.">".$num."</OPTION>\n";

}

$html .= "</SELECT>\n";

$html .= "&nbsp;h&nbsp;\n";

$html .= "<SELECT NAME=\"MIN_".$days."[]\">\n";

for ($j=0; $j<=59;$j++)

{

if ($j < 10)

{

$num="0".$j;

}

else

{

$num=$j;

}

$select = "";

if ($j == $heuremin[1])

{

$select = "SELECTED";

}

$html .= "<OPTION VALUE=\"".$num."\" ".$select.">".$num."</OPTION>\n";

}

$html .= "</SELECT>\n";

$html .= "</td>\n";

$html .= "<td><a href=\"#\" onclick=\"delLigneSched(this); return false;\">".trad("Supprimer")."</a>\n";

$html .= "</td></tr>\n";

return($html);

}

Quand l'utilisateur clique sur ajouter une ligne on clone la première ligne du tableau.
Ce que je veux faire c'est que quand l'utilisateur choisit ne pas arrêter les select contenant l'heure et les minute soit disabled.
Voici la fonction javascript appelée sur le onchange du select arrêt.

function changeArret(link) {

var td = link.parentNode;

var table = getParent(td, 'TABLE');

var index = getParent(td, 'TR').rowIndex;

var heure_select = (index-1)*4 - 2;

var min_select = heure_select + 1;

 

if (table.id == "tableau_weekend")

{

var max = document.getElementById("tableau_weekday").rows.length;

heure_select = heure_select + ((max-3)*4);

min_select = min_select + ((max-3)*4);

}

if (link.value == "no")

{

document.frmPrincipal.elements[""+heure_select+""].disabled="disabled";

document.frmPrincipal.elements[""+min_select+""].disabled="disabled";

}

else

{

document.frmPrincipal.elements[""+heure_select+""].disabled="";

document.frmPrincipal.elements[""+min_select+""].disabled="";

}

}
Ca marche mais je ne trouve pas ça trés propre.

Merci

Astrid

mardi 5 décembre 2006 à 17:57:58 | Re : index d'un select dans un formulaire

nickadele

Membre Club Administrateur CodeS-SourceS
Ce serait peut-être plus simple si tu nous fournissais le code html résultat de ta page.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle

1 2

Cette discussion est classée dans : ligne, formulaire, select, index, select1


Répondre à ce message

Sujets en rapport avec ce message

pb fonction js pour submit de formulaire dynamique [ par BDdev ] HELP !!!!je créé dynamiquement sur une page un tableau contenant les résultats d'une requete sql et dans chaque ligne un formulaire (caché) et je voud formulaire dynamique [ par klem14 ] SAlut à tous.J'aimerais savoir si c'est possible de coder un formulaire dynamique, c'est à dire donner la possibilité d'ajouter une nouvelle ligne de probl de formulaire [ par gregsae ] salut j'ai un probl dans mon formulaire.j'ai un champs select qui propose soit :-particulier soit professionnelle select marche il m'affiche bien le Select qui submit le formulaire quand on sélectionne une des options [ par Diabolus ] Salut tout le monde,Je voudrais faire un sélect dans un formulaire qui permettrait de valider le formulaire sans devoir utiliser un bouton. Dès que l' retour chariot dans un menu select option [ par sbertrand ] bonjour, peut-on, et si oui comment faire passer a la ligne un texte de balise option dans un menu select ?j'ai un texte de 2 km qui agrandie mon menu Formulaire : Ajouter une ligne sans reload [ par coraziari ] Bonjour,Je réalise un formulaire de saisie de CV mais je galère un peu pour les expériences. En effet, pour ne pas "polluer" trop la page, j'ai mis un Plusieurs selects mais n'ayant jamais la même valeur? [ par benhen ] Bonjour, voila, je ne sait pas dutout comment faire, pour avoir plusieurs select sur une page, et qu'ils n'ai pas la même valeur, par exemple:Select1: Positionner une ligne de formulaire [ par benoi6 ] Bonjour,J'ai un code qui me permet d'ajouter des lignes à un formulaire en cliquant sur un bouton. Cependant ma ligne ajouté se place tout a la fin du index d une ligne dans une table [ par echecetmat ] Bonjour,J'aimerai récuperer l'index d'un pour y appliquer un style en fonction de ce numero quand on click sur une checkbox contenu dans cette ligne. valeurs de formulaire 'select' dynamique [ par DarkTiteuf ] Voila bonsoir j'ai le cas suivant : et je voudrais que lorsque je clique sur une valeur a gauche cela change le tableau de droite. La propriété onch


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales