Bien le bonjour à tous,
je suis actuellement occupé à développer un système de site-web modulable et j'ai un petit problème dans le module d'administration destiné à modifier les menus du site. Après une heure à rechercher une solution sur google, je commence à me demander si je suis le seul au monde à avoir ce problème.
Le principe est qu'on peut ajouter un nouvel élément de menu, modifier le nom des éléments du menu et changer leur ordre d'apparition.
J'utilise javascript pour ajouter un nouvel input text ou changer l'ordre de deux éléments ( en réalité, la valeur du premier prends la valeur du second et vice-versa ).
Le problème est que dès que javascript fait quelque chose, il réinitialise tous les champs de mon formulaire à leur valeur d'origine.
Le code php et HTML d'affichage des menus contenus dans la bdd :
le code javascript de changement d'ordre de deux éléments :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <div id="menuList"> <?php if($data['menuItems'] != null) { for($k = 0; $k < sizeOf($data['menuItems']); $k++) { ?> <input type="text" id="menuItem<?php echo $k; ?>" name="menuItem<?php echo $k; ?>" class="menuItem" value="<?php echo $data['menuItems'][$k]['text']; ?>"/> <?php if($k > 0) { ?> <a href="" onclick="moveUp('menuItem<?php echo $k; ?>');"><img src="vue/images/flecheHaut.png" style="position:relative;top:5px;"/></a> <?php } ?> <?php if($k < sizeOf($data['menuItems'])-1) { ?> <a href="" onclick="moveDown('menuItem<?php echo $k; ?>');"><img src="vue/images/flecheBas.png" style="position:relative;top:5px;"/></a> <?php } ?> <br /> <input type="hidden" name="idTextItem<?php echo $k; ?>" id="idTextItem<?php echo $k; ?>" value="<?php echo $data['menuItems'][$k]['idText']; ?>"/> <input type="hidden" name="idMenuItem<?php echo $k; ?>" id="idMenuItem<?php echo $k; ?>" value="<?php echo $data['menuItems'][$k]['idMenu']; ?>"/> <?php } } ?> </div>
C'est comme si quelque part je lançais la méthode .reset() du formulaire qui contient la liste des input text.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 function moveUp(idField) { var id = ""; var name = ""; for(var k = 0; k < idField.length; k++) { if(idField.charCodeAt(k) >= 48 && idField.charCodeAt(k) < 58) id = id+idField.charAt(k); else name = name+idField.charAt(k); } var element2 = document.getElementById(name+(parseInt(id)-1)); var element2Value = element2.value; var element1 = document.getElementById(idField); element2.value = element1.value; element1.value = element2Value; }
Je travail avec WAMP et effectue mes tests sur firefox et chrome.
Merci d'avance pour l'aide fournie et le temps consacré.
Bonne journée
Partager