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 :

Pb d'ajout d'element dans un liste


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Pb d'ajout d'element dans un liste
    Bonjour,

    voila mon problème, j'ai créé un formulaire pour la saisie de véhicule dans une base de données. Dans ce form, j'ai une liste select pour la marque. J'ai ajouté a coté de la liste un bouton permettant d'ajouter une marque grace a une popup si celle ci n'est pas dans la liste. Jusque la tout va bien ... Je voudrais en fait ajouter l'element que je viens d'ajouter grace a ma popup dans la liste de marque de mon form. voici le code de ma popup :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
     
     
    <%
    	Connect
     
    	'on recupere la liste des langues
    	sql="SELECT * FROM langue"
    	Ouvre sql,res,0
     
    	if not estVide(res) then
    		leslangues = res.getrows()
    	end if 
     
    	Fermer res
     
    	if request("actions")<>"" then 
     
    		'recup du nouvel identifiant
    		sql="SELECT * FROM marque ORDER BY id DESC"
    		Ouvre sql,res,0
    		if not estVide(res) then
    			res.movefirst
    			leid = res(0)+1
    		else
    			leid = 1
    		end if 
    		Fermer res
     
    		for c=0 to Ubound(leslangues,2)
    			sql="SELECT * FROM marque"
    			Ouvre sql,res,0
     
    			res.addnew
     
    			res.fields("id")=leid
    			res.fields("idlangue")=leslangues(0,c)
    			res.fields("libelle")=request("libelle"&c)
     
    			res.update
     
    			Fermer res
    		next
     
    		%>
    		<script language="javascript">
     
    			var o=new Option(document.forms["ajmarque"].libelle1.value,'1');
     
     
     
    			window.opener.document.forms["ajvehicule"].marque.options[window.opener.document.forms["ajvehicule"].marque.options.length]=o;
     
     
     
    			self.close();
     
    		</script>
    		<%
     
    	end if
     
    	Deconnect
    %>
    <html>
    <head>
    <title>Ajouter un secteur</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
    <link href="/stylesheet.css" rel="stylesheet" type="text/css">
    <script language="javascript">
    	function Valider(sF){
    		var bval = true;
     
    		<% for b=0 to Ubound(leslangues,2) %>
     
    			if (sF.libelle<%=b%>.value=="" && bval){
    				alert('Veuillez saisir le nom <%=leslangues(1,b)%> de la marque);
    				bval = false;
    				sF.libelle<%=b%>.focus();
    			}
     
    		<% next %>
     
    		return bval
    	}
    </script>
    </head>
    <body>
    <br>
    <form action="./ajmarque.asp" name="ajmarque" method="post" onSubmit="return Valider(this);">
    <table width="90%"  border="0" cellspacing="0" cellpadding="0" align="center" class="bdr">
      <tr>
        <td colspan="2" bgcolor="#CCCCCC" style="padding-left:10px; "><span style="color:#FFFFFF ">Ajouter une marque</span></td>
      </tr>
      <% if isArray(leslangues) then %>
      	<% for a=0 to Ubound(leslangues,2) %>
      <tr>
        <td width="45%" style="padding-left:10px; ">Libelle <%=leslangues(1,a)%></td>
        <td width="55%" align="right"><input type="text" name="libelle<%=a%>" style="width:150px;"></td>
      </tr>
      	<% next %>
      <% end if %>
      <tr>
        <td colspan="2" align="right"><input type="submit" name="actions" value="Enregistrer &gt;&gt;" class="ref"></td>
      </tr>
    </table>
    </form>
    </body>

    Merci de votre aide

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut Re: Pb d'ajout d'element dans un liste
    Citation Envoyé par profx
    voici le code de ma popup :
    On peut n'avoir que le code HTML/Javascript généré?

    Et aussi des informations sommaires sur ta page mère (le nom du formulaire/de l'input)?
    Et puis aussi une description de ce qui ne marche pas dans ce que tu cherches à faire?
    Et puis 100 balles et un mars? (mais c'est optionnel).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci de ta reponse.

    voici le code généré au premier affichage :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <head>
    <title>Ajouter une marque</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
    <link href="/stylesheet.css" rel="stylesheet" type="text/css">
    <script language="javascript">
    	function Valider(sF){
    		var bval = true;
     
     
     
    			if (sF.libelle0.value=="" && bval){
    				alert('Veuillez saisir le nom Français de la marque');
    				bval = false;
    				sF.libelle0.focus();
    			}
     
     
     
    		return bval
    	}
    </script>
    </head>
    <body>
    <br>
    <form action="./ajmarque.asp" name="ajmarque" method="post" onSubmit="return Valider(this);">
    <table width="90%"  border="0" cellspacing="0" cellpadding="0" align="center" class="bdr">
      <tr>
        <td colspan="2" bgcolor="#CCCCCC" style="padding-left:10px; "><span style="color:#FFFFFF ">Ajouter une marque</span></td>
      </tr>
     
      <tr>
        <td width="45%" style="padding-left:10px; ">Libelle Français</td>
        <td width="55%" align="right"><input type="text" name="libelle0" style="width:150px;"></td>
      </tr>
     
      <tr>
        <td colspan="2" align="right"><input type="submit" name="actions" value="Enregistrer &gt;&gt;" class="ref"></td>
      </tr>
    </table>
    </form>
    </body>
    </html>
    lorsque le form est soumis, cette partie de code est alors prise en compte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script language="javascript">
     
    			var o=new Option(document.forms["ajmarque"].libelle0.value,'1');
     
    			window.opener.document.forms["ajvehicule"].marque.options[window.opener.document.forms["ajvehicule"].marque.options.length]=o;
     
    			self.close();
     
    		</script>

    Pour les information de ma page mère, le nom du formulaire est "ajvehicule" et le nom de mon select est "marque"

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par profx
    lorsque le form est soumis, cette partie de code est alors prise en compte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script language="javascript">
     
    			var o=new Option(document.forms["ajmarque"].libelle0.value,'1');
     
    			window.opener.document.forms["ajvehicule"].marque.options[window.opener.document.forms["ajvehicule"].marque.options.length]=o;
     
    			self.close();
     
    		</script>
    Deux choses:
    • Ce n'est pas une bonne idée de soumettre ton formulaire si tu veux faire une insertion en JS. Tu peux faire l'insertion directement sur le onsubmit de ton formulaire.
    • Tu ne peux créer un objet (par exemple une Option) dans un document (ta pop-up) et l'insérer dans un autre document (ta page mère).


    Si ce que je dis est du chinois, dis le moi

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci pour les infos ! je viens de modifier mon code, dans ma fonction valider je viens de rajouter ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (bval){
    			window.opener.document.forms["ajvehicule"].marque.options[window.opener.document.forms["ajvehicule"].marque.options.length].value=sF.libelle0.value;
    			window.opener.document.forms["ajvehicule"].marque.options[window.opener.document.forms["ajvehicule"].marque.options.length].text=sF.libelle0.value;
    		}
    Mais mon element n'apparait toujours pas. Je me demande si ce que je veux faire est réellement possible ?? En tout cas merci de ton aide

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par profx
    Mais mon element n'apparait toujours pas. Je me demande si ce que je veux faire est réellement possible ?? En tout cas merci de ton aide
    Tout à fait

    Pourquoi ne pas créer la nouvelle option?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (bval){
        var nouvelleOption = window.opener.document.createElement("option");
        nouvelleOption.value = document.sF.libelle0.value;
        nouvelleOption.text = document.sF.libelle0.value;
        window.opener.document.forms["ajvehicule"].marque.appendChild(nouvelleOption);
    }
    Tu developpes sur IE ou non? (il y a des problèmes avec l'ajout dynamique dans les formulaires avec IE, parfois).

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je viens de faire le test avec ton bout de code sur IE et firefox (je developpe sous IE effectivement) Mais cela ne fonctionne toujours pas

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Rectification en fait dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.sF.libelle0.value
    , le "document est en trop. Donc cela me créé bien l'option mais vide

    Mais on avance !! Merci

  9. #9
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par profx
    Rectification en fait dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.sF.libelle0.value
    , le "document est en trop. Donc cela me créé bien l'option mais vide
    Adressage des inputs:

    Citation Envoyé par FAQ future
    Comment acceder aux éléments d'un formulaire?

    Supposons que nous ayons dans notre page le formulaire suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form name="monFormulaire" action="...">
      <input type="..." name="monInput" id="monInputId" />
      <input ...
    </form>
    L'accès aux élements du formulaire peut se faire de plusieurs façon:
    • la possiblité historique:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      document.monFormulaire.monInput
      C'est la plus mauvaise. En effet, l'adressage n'est correctement supporté que par Internet Explorer, et rien n'assure la compatiblité avec les navigateurs futurs. De plus si nomInput contient des caractères spéciaux (typiquement les [] de PHP) cette syntaxe ne fonctionne pas. Elle ne peux que difficilement être utilisée pour des noms générés dynamiquement.
    • Adressage par les tableaux forms et elements.
      Le document contient un tableau de ses formulaires (forms) et chacun des formulaire contient un tableau de ses élements (elements).
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      document.forms['monFormulaire'].elements['monInput']
      Cette syntaxe est bien plus portable que la précédente, accepte les caractères spéciaux (comme []) et est aisée à utiliser avec des noms générés dynamiquement.
    • Utiliser l'id de l'input.
      Chaque élement de la page HTML peut être désigné de façon unique par son id (à vous de vous assurer qu'il existe un et un seul élement ayant cet id).
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      document.getElementById('monInputId')
      Cette méthode utilise le DOM, est très souple et concise. Elle connait certaines limitations pour des utilisations dans des boucles.

  10. #10
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par profx
    Rectification en fait dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.sF.libelle0.value
    , le "document est en trop. Donc cela me créé bien l'option mais vide

    Mais on avance !! Merci
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sF.elements['libelle0'].value
    Sinon, essaye une constante (par exemple "toto") juste pour voir si ce n'est que ça le pb....

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    quand je soumet mon formulaire, dans mon onSubmit, je renvoi en parametre un pointeur sur mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="./ajsecteur.asp" name="ajsecteur" method="post" onSubmit="return Valider(this);">
    donc pas besoin de mettre de "document".

    je viens de faire le test en intrgrant des valeur en "dur" dans l'option créée mais celle ci apparait toujours vide

  12. #12
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par denisC
    nouvelleOption.text = document.sF.libelle0.value;
    mais c'est pas ça du tout!!!! Tu me fais dire n'importe quoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nouvelleOption.appendChild(window.opener.document.createTextNode(sF.libelle0.value));

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    alleluia ca marche !!! MERCI BCP

    juste une petite question, comment je precise la value de la nouvelle option

  14. #14
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par profx
    alleluia ca marche !!! MERCI BCP

    juste une petite question, comment je precise la value de la nouvelle option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nouvelleOption.value='lavaleur'
    Pour la value, c'est bien un attribut de l'objet. Par contre, le texte, c'est un noeud fils.....

  15. #15
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Bonjour,
    moi aussi j'ai le même problème en fait j'ai réaliser ça avec un autre script, il fonctionne bien avec opera et firefox mais ça ne donne rien avec internet explorer.

    index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form name="monform">
    <select name="choix" id="choix">
    <option value="rabat">rabat</option>
    <option value="paris">paris</option>
    <option value="berlin">berlin</option>
    </select>
    <input type="button" value="new" onClick="window.open('popup.html','ajouter_ville','width=200,height=200')">
    </form>
    popup.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script language="javascript">
    function refreshPage(newValue){
      var w = window.opener.document.getElementById('choix');
      var content = w.innerHTML;
      content += '<option value="' + newValue + '">' + newValue + '</option>';
      w.innerHTML = content;
    }
    </script>
    <form name="form">
    ville <input type="text" name="ville" onBlur="refreshPage(this.value)">
    <input type="button" value="ok" onClick="self.close();">
    </form>
    j'ai utiliser le syntaxe que vous avez mentionnez ici et ca marche trés bien.
    je voudrai en faite savoir 2 choses :
    - pourquoi mon script ne marche pas sous internet explorer ?
    - comment faire pour que l'option que je viens d'ajouter soit séléctionnez par défaut dans la liste (selected=selected) ?

    Merci d'avance pour toutes réponses de votre part.

  16. #16
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut

    Bonjour tout le monde,
    mon problème est résolu dans un autre forum que j'ai posté, intitulé :
    [Syntaxe]Problème pour rafraichir une liste avec internet explorer .

    Pour ceux qui vont la solution rendez-vous a ce lien:
    http://www.developpez.net/forums/sho...d.php?t=285048

    Bonne chance

  17. #17
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par achos
    mon problème est résolu dans un autre forum que j'ai posté, intitulé :
    [Syntaxe]Problème pour rafraichir une liste avec internet explorer .
    Un autre forum ?
    Non, dans le même ...

    Un double post, quoi

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  18. #18
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut

    wé c'est dans le même zut j'ai oublié.



+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2007] Erreur 404 après ajout d'un nouvel element dans une liste
    Par peyrard dans le forum SharePoint
    Réponses: 6
    Dernier message: 26/10/2011, 18h20
  2. Réponses: 2
    Dernier message: 13/09/2010, 12h53
  3. Réponses: 1
    Dernier message: 18/11/2009, 08h38
  4. ajout d'un element dans une liste et modifier son nom
    Par fibi007 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/04/2008, 17h50
  5. Réponses: 12
    Dernier message: 26/02/2003, 08h14

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