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
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 14 sept. 2006 à 09:58
Bien le bonjour, je ne sais pas si ça peu t'aider mais ton traitement sur le ondblclick est faux ;o)
tu ne peux pas récupérer les infos nbLignes et nbCellules comme ça.
le plus simple c'est de faire un traitement plus générique :
document.getElementById('tabFacture').rows[nbLignes].cells[nbCellules].ondblclick = function (e){
// Récupère la céllule sur laquelle on à fait double clique
var cell = (document.all)? event.srcElement : e.target;
// ajoute le champs de saisie
cell.innerHTML = ""
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 10:03
Ouaisssss :) Ca marche, par contre au risque d'être chiante, tu peu m'expliquer un peu ? Parce que j'ai pas tout compris ...
(document.all)? event.srcElement : e.target; --> Ca veut dire quoi ça au juste (je me doute que tu récupère la cellule qui a générer l'évènement, mais c'est la syntaxe que j'ai pas trop compris)
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 10:05
Et j'ai oublié, pourquoi c'est faux exactement ?? Parce que je suis dans une fonction et donc j'ai plus accès à document.getElementById('tabFacture').rows[nbLignes].cells[nbCellules] ?? (surtout nbLignes et nbCellules ?? ) Ou je dis n'importe quoi ?
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 11:08
Ca marche aussi :)
Par contre si je veux mettre un onBlur sur le input pour que quand on sort du input, la valeur qui y a été saisie soit écrite dans la case (en supprimant le input, donc je retourne à une case normale), comment je fais pour dire que c'est telle case ??
this.innerHTML = '
J'ai essayé de lui passer directement la case mais ça marche pas (comme je m'en étais douté ), mais je trouve pas comment faire. Je sais pas si on peut accéder à la case à partir du input ...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 14 sept. 2006 à 11:18
this.value, là, fonctionne parfaitement.
t.rows[nbLignes].cells[nbCellules].ondblclick =
function(){this.innerHTML = '';}
mis onclick pour le test
onblur n'est activé, avec IE, que si on clique ailleurs sur la page
sinon, voir la fonction afficheSaisie ?
<hr />
cordialement Bul mon SiteM'écrire<hr />
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 11:22
Oups, ben en fait dans afficheSaisie, je voulais que ma case qui contienne le input, ne contiennent plus que la saisie (donc on voit plus le input, mais on voit la valeur de ce qui a été saisie dedans, en gros on repasse en case normale).
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 11:23
Erf, j'ai oublié de dire des choses :p
En fait dès que l'on quitte la case, on la réaffiche normalement avec ce qu'on vient de saisir (d'où le passage en paramètre de this.value pour avoir la valeur), mais après j'arrive pas à y mettre dans la case (je vois pas comment la passer en paramètre).
Peut-être y'a une autre solution?
Mais je voudrais y faire sans ajax, mais je voudrais le même principe pour le remplissage du tableau ... Tu vois mieux ce que je veux ??
Maintenant je vais tester ta réponse
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 13:53
Alors je vois que t'as tout à fait compris, puisque ta solution marche :)
Moi j'essayais de passer directement le this dans la fonction et comme ça marchait pas, je me suis dis que le récupéré avant ça servirait pas à grand chose !! Ben même pas vrai lol
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 14 sept. 2006 à 13:56
je n'ai pas été très clair ( comme souvent ! ) ma question était :
pourquoi, dans une cellule, mettre un texte...
qui sera remplacé par un input...
lui-même reremplacé par un texte ?
pourquoi ne pas simplement mettre, d'entrée, un input text ?
et le laisser ! par exemple !
<hr />
cordialement Bul mon SiteM'écrire<hr />
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 14 sept. 2006 à 13:59
Ah ok désolée j'avais mal compris!
Parce que la personne va être amenée à changer les données etc etc, données enregistrées dans une base de données.
Donc la première fois, c'est sûr le tableau est vide, mais quand elle revient, il est rempli, et là elle peut changer des choses ...
C'est pour ça. C'est pas une bonne idée mon truc ?? (même si c'est pas une idée de moi lol)