Aide javascript

Fermé
elhila Messages postés 32 Date d'inscription mercredi 13 décembre 2006 Statut Membre Dernière intervention 5 août 2008 - 25 sept. 2007 à 19:03
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 28 sept. 2007 à 21:29
slt, est c qu'il y a une méthode qui permet de récupérer l'indice de la case qui a été coché parmis les cases au niveau de javascript. et merci.

8 réponses

Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
26 sept. 2007 à 00:34
sAlUt,

Supposant que tes cases à cocher (des checkbox ou radio) portent la même valeur d'attribut name, en JS tu peux faire genre :
var cases = document.formulaire.choix;
var i;
for(i=0; i<cases.length; i++) {
   alert(cases[i].checked);
}

Ici on a récupéré dans la variable "cases" un tableau de Checkbox. Le premier indice commence à 0 et la propriété "length" permet de connaître le nombre de cases à cocher. La propriété "checked" quant à elle permet de déterminer si la case a été cochée. Si elle l'est, comme tu es dans une boucle avec un cmpteur (ici "i") tu peux connaître sa position.

Pour que cet exemple soit cohérent, il faut que les <input type="checkbox" /> portent un attribut name="choix" et qu'ils soient englobés dans un <form name="formulaire">.
0
elhila Messages postés 32 Date d'inscription mercredi 13 décembre 2006 Statut Membre Dernière intervention 5 août 2008 1
26 sept. 2007 à 12:31
par exemple, document.formulaire.listCheckBox[1].value pour récupérer directement la valeur du check box, est c q'il y a une méthode permettant de récupérer l'indice de la case pour le transférer en paramétres à une autre fonction !
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
26 sept. 2007 à 19:09
Ta question, identique au problème initial, trouve sa réponse dans mon premier post (et en plus dans ta dernière question). Si tu récupères la valeur d'une checkbox en spécifiant l'indice, c'est logique que cet indice représente aussi l'indice de la case. Comme je t'ai dit, il faut que tes input ayent la même valeur d'attribut name, tu n'as pas à les désigner par leur id (au passage obligatoirement différent pour chaque input).
<form name="f">
    <input type="checkbox" name="politesse" id="poli" value="je dis merci" />Merciiiiii
    <input type="checkbox" name="politesse" id="impoli" value="je ne dis pas merci" />Et comment on fait ??!!
</form>

Maintenant avec ça, faire document.f.politesse[1] te prend la deuxième case (on commence à compter à 0 j'ai dit) et c'est ce "1" que tu passeras en argument à ta fonction. Si à ça tu adaptes le bout de code de ma première réponse, c'est grâce au compteur "i" que tu connaîtras la position (l'indice).
var cases = document.f.politesse;
var indice;
for(indice=0; indice<cases.length; indice++) {
   if(cases[indice].checked) {
      alert("La case n° " + (indice + parseInt(1)) + " est cochée");
      //appel de la fonction avec indice en argument, qui représente la position de la checkbox dans la liste
   }
}
0
elhila Messages postés 32 Date d'inscription mercredi 13 décembre 2006 Statut Membre Dernière intervention 5 août 2008 1
27 sept. 2007 à 02:59
t'as pas comrpis le probleme. j'aimerai lorsque je clique sur une case, directement recupérer son indice ou bien valeur et le passer comme paramétre à une fonction. l'indice de la case qui a été coché va me permettre de faire les testes que je veut !!
autrement dis, avant de faire la boucle je dois avoir l'indice de la case qui a été coché.

je cherche une fonction javascript, comme ce truc la :

document.forms[0]."nom de groupe de checkbox".getSelectedIndex

getSelectedIndex ne trouve pas, mais je cherche une fonction qui fai ca directement !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
27 sept. 2007 à 21:52
Haaaaaaaaaaaaan mais fallait le dire tout de suite :-p

Dans les balises input tu as la possibilité de définir l'attribut onclick. La référence this permet d'envoyer à une fonction l'objet courant.

Sur cet objet, tu sais accéder à la valeur grâce à la propriété value.
Pour la position j'en sais rien mais j'ai une solution temporaire pour toi :
function cliqueBox(box) {
	alert("La valeur de la case cliquée est \"" +  box.value + "\"");
	var politesses = document.f.politesse;
	var position = 0;
	while(i<politesses.length && politesses[i]!=box) {
	       i++ ;
	}
        position = i+1;
	alert("Sa position vaut " + position);
}

Ainsi chaque input ressemblera à
<input type="checkbox" name="politesse" id="poli" value="je dis merci" onclick="cliqueBox(this)" />Merciiiiii mais
<input type="checkbox" name="politesse" id="impoli" value="je ne dis pas merci" onclick="cliqueBox(this)" />T'as rien compris !!!!


PS : Ce code est truffé d'un message subliminal :roll: 8-} 8-)
0
Bonjour,

Bonjour,

vs n'avez pas encore compri le probleme. j'ai des checks box, pr cela j'ai utilisé le tag "multibox" pr tracer les cases à cocher, et j'ai utilsé le code suivant :

<logic:iterate id="centralelb" indexId="count" property="centralesLb" name="suiviProductionForm">
<bean:define id="centalebean" name="centralelb"
type="com.carrefour.cfou.beans.administration.AdministrationGenericBean" />
<html:multibox property="selectedCentrales" styleId="<%=String.valueOf(count)%>" onclick="javascript:cocherDecocher (document.forms[0].selectedCentrales['<%=String.valueOf(count)%>'].value);">
<bean:write name="centalebean" property="code" />
</html:multibox>
<bean:write name="centalebean" property="libelle"/><br/>
</logic:iterate>

je veut récupérer l'indice de la case qui a été coché au moment du clique, j'ai fais ca :

cocherDecocher(document.forms[0].selectedCentrales['<%=String.valueOf(count)%>'].value) mais ca marche pas !!!

je dois récuperer l'indice immédiatement au momoent du clique pr le passer comme paramétres..


et merci !!
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
28 sept. 2007 à 20:59
Salut,

En effet je n'ai pas compris le problème mais si tu me parles JavaScript, je ne te parle pas Struts. Je ne connais pas ce framework et je ne peux donc pas t'aider. Choisis un titre plus parlant, quelqu'un d'autre pourra peut-être t'aider. Bonne chance ! ;-)
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
28 sept. 2007 à 21:29
Maintenant en lisant un peu de documents sur ce taglib, j'en comprends que ça génère un tableau "items" qui représente la liste des valeurs des checkbox au grand complet et un tableau "selecteditems" qui reprend la liste des items sélectionnés et rien d'autre.

Si tu recherches un élément sélectionné dans le tableau complet, tu connaîtras sa position et en fait on reste proche de la solution que je te propose, mais je ne peux pas t'en dire plus sur la façon de récupérer ces tableaux. Puis ça dépend du code généré par ce taglib, pour une manipulation JavaScript c'est le code HTML retourné par le framework qui prendra de l'importance.

Le JavaScript est exécuté côté client. Or, le client reçoit le code HTML produit par le framework. Donc, ton code JavaScript doit s'adapter au code HTML et non pas au code spécifique au framework.

Donc je te conseille de vérifier le code HTML généré par ces taglibs et le comparer à ce que tu attendais. Sur base de ça tu pourras rectifier le tir en Struts, mais là encore je ne serai pas en mesure de t'aider.
0