IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Select remis à selected involontairement


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Points : 106
    Points
    106
    Par défaut Select remis à selected involontairement
    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
    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;
    }
    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
    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>
    Je précise que les commentaires bizarres sont des balises du moteur de template de phpBB3 que j'utilise pour mon projet

    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

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    <option disabled selected></option>
    un option désactivé ne sera pas sélectionné et la notion est
    disabled="disabled"
    selected="selected"

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Points : 106
    Points
    106
    Par défaut
    un option désactivé ne sera pas sélectionné
    En fait, si. un objet généré "disabled selected" sera initialement sélectionné et ne pourra plus être re-sélectionné par la suite. Ce qui est plutôt pratique dans le cas mon cas : par défaut je met un choix blanc pour inciter l'utilisateur à choisir, et je l'empêche de rechoisir blanc pour éviter d'avoir des données incohérentes.

    Pour la notation, je me contente de la version courte pour la clarté du code tant que je développe, ça marche pareil.

    Celà dit, mon problème reste entier

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Points : 106
    Points
    106
    Par défaut
    Je remonte le sujet vu que rien n'a avancé de mon côté.

    Le rafraichissement du conteneur subséquent à la mise à jour de son contenu met donc la pagaille en remettant aux valeurs selected toutes mes listes.

    En terme de workaround, j'envisage d'ajouter un tit javascript qui sur "onchange" va parcourir la liste des choix, faire sauter l'ancien selected pour l'attribuer à l'option désignée par la propriété selectedIndex.
    Ce qui serait encore mieux serait de se passer de selected et utiliser selectedIndex directement. Sauf qu'à ma connaissance, on ne peut pas faire ça via du php (quelquechose comme <select name=machin selectedIndex=2>...)

    J'apprécierai l'avis d'un connaisseur avant de me marcher sur ce chemin de croix, merci d'avance !

Discussions similaires

  1. select in (select in (select in etc.))
    Par Christophe P. dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/01/2015, 11h34
  2. Réponses: 6
    Dernier message: 20/11/2007, 11h14
  3. select * ou select count(*) ou select count(id)
    Par wjc dans le forum Requêtes
    Réponses: 12
    Dernier message: 19/12/2005, 19h00
  4. Forms 9i : CURSOR "SELECT 1, (SELECT..&q
    Par McM dans le forum Oracle
    Réponses: 9
    Dernier message: 05/11/2005, 14h02
  5. flexgrid:selection cellule=selection ligne
    Par Terminator dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/10/2005, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo