Déplacer des champ input à la volée
Posté : 17 sept. 2010, 15:19
Bonjour,
Je cherche à faire un formulaire dynamique qui à a base ne propose qu'une seule ligne de champ texte (input), visuellement cela donnerais ceci :
L'utilisateur doit aussi pouvoir modifier l'ordre de cette liste à la volée par les boutons "+" et "-".
Pour la partie ajout de ligne et suppression cela fonctionne avec l'adaptation d'un bout de code :
Il manque le rajout des bouton "+" et "-" dans ce dernier.
Le but étant à la validation finale du formulaire (une fois que l'utilisateur à ajouter tous ces articles et qu'il les a mis dans l'ordre voulu) d'enregistrer chacune des lignes dans une table afin de pouvoir afficher les articles dans l'ordre souhaité par l'utilisateur.
Je n'ai pas trouvé d'exemple combinant ces fonctions.
Pourriez-vous m'aider à réaliser ces fonctions ?
D'avance merci.
Je cherche à faire un formulaire dynamique qui à a base ne propose qu'une seule ligne de champ texte (input), visuellement cela donnerais ceci :
<form method="post" action="#" id="form">
<fieldset>
<span id="ligne_1">
<input type="text" name="ordre[]" id="ordre_1" size="27" value="1" />
<input type="text" name="article[]" id="article_1" size="27" value="" />
<input type="text" name="quantitee[]" id="quantitee_1" size="3" value="" />
<input type="text" name="prix[]" id="prix_1" size="5" value="" />
<input type="button" value="x" id="boutton_1" onclick="delete_champ(1)" />
<input type="button" value="+" id="boutton_haut" onclick="moveup_champ()" />
<input type="button" value="-" id="boutton_bas" onclick="movedown_champ(1)" />
<br />
</span>
<span id="champs_2"><a href="javascript:create_champ(2)">Ajouter un article</a></span>
</fieldset>
</form>
L'utilisateur doit pouvoir ajouter ou supprimer une ligne de champ par les boutons ajouter un champ (Ajouter un article) et X pour supprimer.L'utilisateur doit aussi pouvoir modifier l'ordre de cette liste à la volée par les boutons "+" et "-".
Pour la partie ajout de ligne et suppression cela fonctionne avec l'adaptation d'un bout de code :
Code : Tout sélectionner
<script type="text/javascript">
<!--
function create_champ(i){
var i2 = i + 1;
document.getElementById('champs_'+i).innerHTML = '<span id="ligne_'+i+'"><input type="text" size="27" name="ordre[]" id="ordre_'+i+'" value="'+i+'" \/> <input type="text" size="27" name="article[]" id="article_'+i+'" \/> <input type="text" size="3" name="quantitee[]" id="quantitee_'+i+'" \/> <input type="text" size="5" name="prix[]" id="prix_'+i+'" \/> <input type="button" value="x" id="boutton_'+i+'"onclick="delete_champ('+i+')" \/><br \/><\/span>';
document.getElementById('champs_'+i).innerHTML += '<span id="champs_'+i2+'"><img src="images/add.png" alt="" title="" \/> <a href="javascript:create_champ('+i2+')">Ajouter un article<\/a><\/span>';
}
function delete_champ(i){
document.getElementById("ligne_"+i).innerHTML="";
}
// -->
</script>
Le but étant à la validation finale du formulaire (une fois que l'utilisateur à ajouter tous ces articles et qu'il les a mis dans l'ordre voulu) d'enregistrer chacune des lignes dans une table afin de pouvoir afficher les articles dans l'ordre souhaité par l'utilisateur.
Je n'ai pas trouvé d'exemple combinant ces fonctions.
Pourriez-vous m'aider à réaliser ces fonctions ?
D'avance merci.