cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 2007
-
14 sept. 2006 à 09:16
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 2007
-
18 sept. 2006 à 08:28
Bonjour,
J'aimerais créer un tableay dynamique, c'est-à-dire un tableau sans lignes au départ, dans lequel on peut rajouter des lignes vides et écrire dans les cases.
J'ai cherché sur le site et je suis tombé sur des post de forum et sources (notamment une source de Bultez), et je m'en suis inspirée.
Seulement je rencontre des petits problèmes. J'ai trouvé plusieurs codes plus ou moins compliqués, et j'ai donc essayer de faire simple (au cas où quelqu'un retouche après moi) :
<script language="javascript1.3">
var nbLignes = 0;
function AjoutLigne()
{
var nbCellules = 0;
var newCell;
nbLignes ++;
var newRow = document.getElementById('tabFacture').insertRow(-1);
En fait, la ligne en rouge pose problème. Je voulais ajouter une fonction sur chaque case quand on double clique dessus (pour laisser apparaître un champ texte permettant de modifier la case), mais en fait il me dit que document.getElementById('tabFacture').rows[nbLignes].cells[nbCellules] n'a pas de propriétés, alors que je l'ai utilisé dans la ligne d'avant pour ajouter les 'a' dans les cellules !!
Quelqu'un voit ce que j'ai fais de travers ?? Sinon est-ce que je m'y prends bien ou j'utilise pas la bonne méthode pour faire ce que je souhaite ??
En attendant des réponses de votre part (merci d'ailleurs pour les réponses), je continue de chercher
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 14:15
Ben mettre directement un input text peut inciter la personne à aller modifier, on veut éviter ça ! C'est un peu une sécurité en gros ... Enfin c'est assez spécial lol Et puis bon, c'est plus joli que d'avoir plein d'input text :p
Bon allez me reste encore le fait de mettre le focus quand on double-clique et puis ça sera top :) Bon après il reste plein de choses à faire m'enfin lol
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 14 sept. 2006 à 14:30
>>mettre directement un input text peut inciter la personne à aller modifier, on veut éviter ça !
1° tel que c'est fait, rien n'empêche de refaire un double click...
il faut donc invalider le double click une fois fait.
2° et on n'a donc pas le droit aux erreurs en saisie ?
très contraignant.
>>c'est plus joli que d'avoir plein d'input text
plus joli ? à l'oeil, à la vue ?
( car si c'est autre chose je ne suis pas d'accord du tout ! )
il suffit de mettre un style associé à l'input text, ce sera
beaucoup plus simple, et javascript inutile !
mais chacun fait comme il l'entend,
et les vaches seront bien gardées.
<hr />
cordialement Bul mon SiteM'écrire<hr />
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 14 sept. 2006 à 14:33
quand à la dernière question :
tu as testé avec plusieurs lignes ajoutées ?
un ID doit être unique dans une page.
<hr />
cordialement Bul mon SiteM'écrire<hr />
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 14:37
C'est pas ce que j'ai voulu dire.
Bien sûr que les erreurs de saisies sont autorisées ! C'est juste que pour la personne qui va l'utiliser, ça lui donnera l'impression que ça a été pris en compte. Enfin je sais pas trop comment t'expliquer, désolée. C'est juste pour son impression à elle, puisqu'une fois que certaines cases sont saisies, d'autres se calculent automatiquement, ça donne plus l'impression que sa saisie est prise en compte et ses calculs sont générés. C'est juste histoire de rendre la chose plus sympa (mais en même temps, je te l'accorde, tout le monde ne trouve pas forcément ça sympa lol).
C'est aussi pour que certaines personnes qui vont le modifier a un moment donné n'ait pas peur de tous ces input en se disant "ola faut faire attention à pas se trompé de cases !", des trucs dans le genre...
Et de toute manière, j'ai besoin du javascript pour recalculer certaines cases à chaque fois ...
Mais merci de tes remarques, tes explications et ton aide :)
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 14:39
quand à la dernière question :
tu as testé avec plusieurs lignes ajoutées ?
un ID doit être unique dans une page.
J'ai testé et ça fonctionne puisque l'input n'existe plus une fois qu'on sort de la case, l'id aussi n'existe plus non ?? En tout cas ça fonctionne bien, et je pense pas qu'il y ait deux fois le même id si le input n'existe plus, mais là j'avoue j'ai un gros doute en disant ça :p
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 14 sept. 2006 à 14:53
>>puisque l'input n'existe plus une fois qu'on sort de la case
ouais... peut-être...
faudrait voir tous les cas de figures et par navigateurs
>>tes remarques...
c'était mon avis, qui ne vaut que ce qu'il vaut : c'est à dire rien.
je n'aurais pas fait les choses comme ça, trop de complications
pour un résultat quasi inutile, même complètement :
jouer simplement avec le style donnerait le même résultat.
mais ce n'est que mon avis encore une fois, et il ne faut
absolument pas en tenir compte.
si cela convient... nickel.
<hr />
cordialement Bul
mon Site M'écrire
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 15:35
A vrai dire avant que tu n'en parles, je n'avais pas pensé à ça comme ça. C'est sur ça aurait sûrement été plus simple !!
M'enfin, maintenant que l'autre personne a vu ça, je suis sure qu'elle voudra pas d'une autre façon lol
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 15 sept. 2006 à 08:56
Bon, je reviens sur le sujet désolée.
En fait j'essaye de faire la suppression d'une ligne. Pour ça j'ai un bouton dans la première case de chaque ligne du tableau pour la suppresion.
A chaque ligne j'ai mis un id : newRow.setAttribute("id","ligne"+nbLignes);
Cet id est correct, je l'ai vérifié :) Par contre je n'arrive pas à faire en sorte de mettre un onClick sur le bouton suppression de chaque ligne pour dire qu'il faut supprimer la ligne :
En fait il me renvoit toujours l'identifiant de la dernière ligne. Pourtant je définit ça au moment ou je met le bouton dans la première ligne au moment de sa création.
J'ai essayé plusieurs façon, mais c'est toujours le dernier id que je récupère :(
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 15 sept. 2006 à 10:53
Bon j'ai essayé de mettre sur le bouton un id similaire à celui de la ligne ("image"+nbLignes) comme ça il suffit de récupérer le nbLignes pour savoir qu'elle ligne supprimer. Mais c'est pas aussi simple lol
Si j'utilise deleteRow, en paramètre il faut que je lui donne le numéro de la ligne à supprimer, et là ça va plus avec ma méthode d'idi.
Supposons j'ai 4 lignes, si je supprime la 2 avec deleteRow(2), tout va bien parce que c'est la première suppression, mais si ensuite je demande à supprimer la 3, il va supprimer la 4 (effectivement la ligne 3 remonte d'un cran, elle se trouve donc en 2, et la 4 en 3) ...
Je sais pas si vous avez compris ...
Et autre chose bizarre (mais que je n'ai pas encore regardé), quand on supprime des lignes et qu'on en ajoute après, les nouvelles lignes ajoutées sont bizarres --> elles n'ont que 2 colonnes au lieu de 7, et sont miniscules en hauteur!
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 15 sept. 2006 à 16:09
Euh, j'ai pas tout compris désolée (la fin de journée est difficile lol)
Si Id de ligne courant = Id du bouton cliqué
tu mémorises le numéro de ligne (via une valeur qui s'incrément par exemple)
Quand l'id de la ligne courante ne vas plus être égale à celui du bouton cliqué, il va se passer quoi?
Et pour la hauteur des lignes, c'est un bug (pourquoi je sais pas, j'ai pas eu le temps de chercher encore), parce que les cases sont remplies (c'est pour mes tests m'enfin)!!
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 15 sept. 2006 à 18:55
En fait, je crois que j'ai saisi mais pas tout. Le truc c'est que ça va marcher pour la première, mais après mes identifiants de boutons et ceux de la ligne ne seront plus jamais égaux, et donc je ne pourrais plus supprimer d'autres lignes non??
C'est pas vraiment ce que je souhaite. Mais je parie que j'ai encore tout compris de travers lol
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 18 sept. 2006 à 08:28
Merci pour le rowIndex. Je pensais pas que ça existait !!
Par contre, sous Firefox, parentElement ne marche pas, il faut utiliser parentNode, et ça marche sous Firefox et sous IE.
Et pour les lignes que je créais après en avoir supprimer et qu'elles était bizarre, et bien c'est parce que quand j'en supprimais, j'oubliais de décrémenter le nombre de lignes totales.
Et pour ton façon de faire, elle est sympa :) Maintenant c'est au chef de décider :p
En tout cas, merci à vous deux de vous être repencher sur mon problème :)