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 :

CKEditor instances."Name".getData pb


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut CKEditor instances."Name".getData pb
    Bonjour,

    comme dit dans le titre, j'aimerais récuperer le contenu d'une instance CKEDITOR, le contenu d'un textarea html.

    Le problème est que mon formulaire est créé dynamiquement, et que les "name" sont donc "dynamique" aussi.
    Pour utiliser les champs de mon formulaire, je voulais donc passer le nom de mon textarea par l'intermediaire d'une fonction qui prendrait en paramêtre le nom du champs.
    Tout cela pour pouvoir au final envoyer le contenu en AJAX.
    en gros:

    En HTML :
    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
     
    <form>
    <textarea name="nomDuTxtarea1">
    </textarea>
    <script type="text/javascript">
    	CKEDITOR.replace({nomDuTxtarea1});
    </script>
    <input type="button" onClick="laFctQuiDonneLeNomDuTxtarea('nomDuTxtarea1')" />
     
    <textarea name="nomDuTxtarea2">
    </textarea>
    <script type="text/javascript">
    	CKEDITOR.replace({nomDuTxtarea2});
    </script>
    <input type="button" onClick="laFctQuiDonneLeNomDuTxtarea('nomDuTxtarea2')" />
    </form>
    Et dans le fichier Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function laFctQuiDonneLeNomDuTxtarea(nom){
    		alert(CKEDITOR.instances.nomDuTxtarea1.getData()); //fonctionne
    		alert(CKEDITOR.instances.nomDuTxtarea2.getData()); //fonctionne
    		alert(CKEDITOR.instances.nom.getData()); //ne fonctionne pas
    }
    Comme marqué ci-dessus, les deux première ligne fonctionnent car j'appelle le nom de l'instance directement.
    Je crée mes textarea de façon dynamique, donc le nom change. Il m'est donc impossible de coder "en dur" le nom de l'instance. (comme fait ci-dessus)
    La façon logique est d'utiliser le nom passé en paramêtre, mais comme mentionné, ça ne fonctionne pas.
    Ma question est donc, comment faire pour que mon "nom" passé en paramètre soit reconnu ?

    Merci de vos réponses,

    Aurélien

    PS : Il est aussi possible que je n'ai pas compris le fonctionnement de CKEditor, car si je fait un alert(document.getElementsByName(nom)) dans la fonction, je trouve bien le champ.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    on peut voir comment tu donnes le nom ?

    selon msdn le name ne peut etre attribué de façon dynamique sous IE ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Salut,

    Je créer le nom comme suit:
    en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for ($id ; < ; ++)
    echo '<input type="button" onClick="laFctQuiDonneLeNomDuTxtarea(\'nomDuTxtarea'.$id.'\')" />';
    Je travaille sur FF3, IE ne m'interesse pas.
    Le truc bisare est que si dans la fonction js : laFctQuiDonneLeNomDuTxtarea(nom),
    je fais alert(nom), je récupere bien le BON nom passé en paramètre. Pour aller plus loin, si je fait un document.getElementsByName(nom).value, je récupère bien la valeur souhaitée (ce qui prouve que le champs et le "nom" existe).
    Par contre, dès que j'utilise ce "nom dynamique" pour l'instance CKEditor, ça ne fonctionne plus, et je n'arrive pas à trouver comment faire.

    D'ores et déjà merci de ta contribution.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    il est mis ou le nom au final ???

    que tu fasse un alert et qu'il el restitue c'est normal js retrouve les attributs, mais si c'est pour finir dans un name de textearea ou de champs de form là c'est le DOM qui ne permet pas d'attribuer dynamiquement un name.
    Il y a un pot dans les contributions sur les forms dynamiques ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Je suis désolé je ne comprend pas bien qu'est ce que tu me demandes,

    Le nom c'est celui du textarea modifié par CKEditor (premier code que j'ai posté)
    Mon but est de récupéré la valeur du textarea, ce que je pense faire avec la fonction CKEDITOR.instances.name.getData().

    Et pour cela j'ai besoin d'affecté le nom dynamique a mon textarea.

    c'est le DOM qui ne permet pas d'attribuer dynamiquement un name
    En fait, si je désactive CKEditor, je récupere facillement la valeur de mon textarea grâce à javascript, donc je suppose que CKEditor doit utiliser les objet DOM et que je l'ai dans ....

    Bref, merci de ton aide mais je crois que je vais faire sans AJAX, du coup j'aurais plus besoin de récuperer le nom.

  6. #6
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Dans FCKEditor, l'ancienne version, il y avait un callback à implémenter dont je me servais dans ces cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function FCKeditor_OnComplete( editorInstance ) {
      alert(editorInstance.LinkedField.name);
    }
    il y a peut être CKeditor_OnComplete ?
    je ne sais pas si c'est ce que tu cherches
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai été confronté au même problème aujourd'hui.
    La solution est d'accéder à l'instance avec []

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textareaValue = CKEDITOR.instances[textareaDynamicName].getData();
    C'est cette page qui m'a mise sur la piste :
    http://stackoverflow.com/questions/9...editors-iframe

    Bonne journée,

    Keroth

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