Bonjour
Commençons par une petite présentation de ma page d'édition où se situe mon problème. L'élément qui nous intéresse est un tableau de propriété : chaque ligne représente un objet (créé ailleurs), chaque colonne dans cette ligne contient une liste de choix d'attributs.
L'utilisateur est censé choisir un premier attribut dans la première colonne, ce qui lui permet de choisir le deuxième dont la liste était désactivé avant, et ainsi de suite. Ajoutons à celà la possibilité d'ajouter et de supprimer des lignes à la volée.
Le problème est le suivant :
Pour ajouter une nouvelle ligne, sur clic sur le bouton "Add" un javascript copie une ligne modèle depuis un élément caché. Mais faire ceci remet à leur valeur "selected" toutes les autres listes de la page !
Voici la fonction JS qui fait la copie du modèle
Et voici la ligne modèle copiée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function copyModel(sFromId, sToId) { try { var sContent = document.getElementById(sFromId).innerHTML; sContent = sContent.replace(/%ROW_ID%/g, Math.random()); document.getElementById(sToId).innerHTML += sContent; } catch (oErr) { return false; } return true; }
Je précise que les commentaires bizarres sont des balises du moteur de template de phpBB3 que j'utilise pour mon projet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <tr> <td class='tag'>Synchrony</td> <td> <select id='synchrony#%ROW_ID%' name='synchrony' onchange='ajaxComponentUpdate(this,"%ROW_ID%");'> <option disabled selected></option> <!-- BEGIN component_synchrony --> <option value="{component_synchrony.SYNCHRONY}">{component_synchrony.SYNCHRONY}</option> <!-- BEGINELSE component_synchrony --> <option>No available component.</option> <!-- END component_synchrony --> </select> </td>
J'imagine que la copie déclenche un rafraichissement de l'affichage, ce qui remet les select sur la valeur selected ... et je vois pas du tout comment contourner ou éliminer simplement le problème :S
Partager