Forum de discussion
Forum « Programmation Javascript » (archives)
Re: probleme avec input multi
Envoyé: 23 septembre 2005, 9h17 par Oznog
Il y a deux façons de faire.
1. Tu génère le HTML directement. Tu travail avec une simple chaîne de caractères. La manipulation peut prendre toute sorte de direction. Comme ton exemple basé sur le stockage dasn un tableau. (Ça aide puisque tu travail avec une simple chaîne de caractères et donc sans en connaître les détail).
J'ai ici un exemple simpl;e mais fonctionnel basé sur mes tutoriels DHTML (http://www.trucsweb.com/DHTML/) :
<html>
<head>
<title>Trucsweb - Formulaire dynamique</title>
<style>
.monObjet {
position: absolute;
top: 1;
left: 1
}
</style>
<script type="text/javascript" language="javascript">
<!--
var nbrForm = 0;
var ns4=document.layers
var ie4=document.all
var ns6=document.getElementById&&!document.all
var nForm1 = '<form>Formulaire<br >';
var nForm2 = '</form>';
var nForm3 = nForm1 + nForm2;
function Ajoute_form() {
nbrForm +=1;
nForm1 = nForm1 + '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="center">ADD'+nbrForm+'</td></tr><tr><td>Champ1'+nbrForm+' : <input type="Text" name="champ1'+nbrForm+'+"> Champ2'+nbrForm+' : <input type="Text" name="champ2'+nbrForm+'"></td></tr><tr><td>Area'+nbrForm+' : <textarea name="area'+nbrForm+'"></textarea></td></tr></table>';
nForm3 = nForm1 + nForm2;
}
function twAjoute_form(nObjet,nContenu,nLeft,nTop) {
// Script gratuit des Trucsweb
// http://www.trucsweb.com
// Laisser cette remarque
// nObjet = le nom de l'objet
// nContenu = Le contenu affiché dans l'objet
// nLeft = La position x (de: haut gauche)
// nTop = La position y (de: haut gauche)
if (ns4) {
document.eval(nObjet).document.write(nContenu);
document.eval(nObjet).top =nTop;
document.eval(nObjet).left =nLeft;
document.eval(nObjet).document.close();
}
else if (ns6) {
document.getElementById(nObjet).innerHTML = nContenu;
document.getElementById(nObjet).style.left=nLeft;
document.getElementById(nObjet).style.top =nTop;
}
else if (ie4) {
eval(nObjet).innerHTML = nContenu;
eval(nObjet).style.pixelLeft=nLeft;
eval(nObjet).style.pixelTop=nTop;
}
}
// -->
</script>
</head>
<body>
<div class="monObjet" id="monObjet">Le DIV</div>
<br><br><br>
<a href="#"
onClick="Ajoute_form(); twAjoute_form('monObjet',nForm3,75,1)">Ajouter</a><br><br><br><br>
</body>
</html>
2. Tu peux aussi t'attaquer directement à la structure du document, au DOM en ciblant le bon noeud et en ajoutant des noeuds. C'est à dire en ciblan la place du formulaire et en ajoutant des objets de type « input ». On a ici le contrôle total mais c'est un peu plus complexe à saisir.
Cette méthode s'utilise toujours de la même façon bien que tu puisses simplifier des bout. C'est à dire créer un simple « élément » et lui donner du HTML comme valeur.
var oElement = document.createElement('<input type="text" name="monchamp" value="Texte par défaut...">");
// que tu ajoute où bon te semble :
document.body.insertBefore(oElement);
Ou plus avancé, carrément créer les élément de type « input ». En gros :
var oMonchamp = document.createElement('input');
oMonchamp.size = 25;
// Dans une boucle tu dois l'incrémenter 'monNomX'+(nBoucle+1);
oMonchamp.name = 'monNomX';
// L'inbrication peut être dans une cellule de tableau (en autant que le tableau existe)
// Objet
var oTableauT = document.createElement('tbody');
var oLigne = document.createElement('tr');
var oCellule = document.createElement('td');
oCellule.appendChild(oMonchamp);
oLigne.appendChild(oCellule);
oTableauT.appendChild(oLigne);
oTableau.appendChild(oTableauT);
// Et ainsi de suite.
Tu peux aussi ajouter les éléments à un objet bien précis. En ciblant l'ID.
var oMonObjet = document.getElementById('idDeMonObjet');
Etc. Ça fait pas mal le tour.
Ciao
Oznog
Réponses
|