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

Bibliothèques & Frameworks Discussion :

Double submit nécessaire [V 3]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Double submit nécessaire [V 3]
    Bonjour ,
    j'utilise tinymce depuis peu de temps, donc je ne connais pas très bien tous les paramètres avancés de configuration.
    Je développe un CMS pour lequel je souhaite intégrer tinymce.

    J'ai 2 formulaires: un formulaire de modification/suppression et un formulaire de création.
    Les deux formulaires sont identiques, excepté bien sûr que les champs sont initialement vides pour le formulaire de création.

    Dans ces formulaires, j'ai 2 textarea: 1 textarea 'normal', et un textarea utilisant tinymce.

    Une fonction javascript très simple permet de contrôler que les champs ont bien été remplis.
    Pour le formulaire de modification, tout marche très bien, mais pour le formulaire de création, ma fonction javascript me retourne un message d'erreur comme quoi mon champ est vide (alors que je l'ai rempli ).
    Si je valide une deuxième fois le formulaire, sans rien changer par ailleurs, alors là ça marche.

    Bien sûr, la double validation ne me convient pas, mais je ne trouve pas l'erreur.

    J'utilise tinymce 3 (dernière version stable à ce jour), Firefox 2.0.0.14, MacOsX, développe en local (MAMP), php5 (au cas où ça puisse avoir une importance ...)

    Mon init de tinymce est le suivant :
    tinyMCE.init({
    mode : "exact",
    theme : "advanced",
    elements : "reponse "
    })

    "reponse" est le champ qui pose problème.


    J'ai cherché pas mal sur internet, j'ai bien vu quelques personnes décrivant le même problème que moi, mais jamais de solution

    Alors si quelqu'un pouvait m'aider, j'apprécierai beaucoup

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut et bienvenue dans les forums de Developpez.com!

    Ces saisies sont sauvées dans une session ou un cookie ?

    (Sans code, ça va être dur de t'aider...)

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Le code de ma page
    Voici le code complet de ma page.
    Je mets toute le page car le problème peut être extérieur au formulaire je suppose.
    J'utilise également Ajax, avec 2 listes liées, mais je ne crois pas que cela ait un rapport car j'avais ce problème avant d'intégrer l'ajax.
    Mes saisies ne sont pas stockées dans des cookies. Mon problème se situe du côté client : fonction javascript qui n'arrive pas à récupérer le contenu du textarea tinymce à la première soumission, mais à la deuxième elle y arrive.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="description" content="" />
    <title>Editeur de contenu eKiwi</title>
    <link rel="icon" href="favicon.gif" type="image/gif" />
    <link rel="stylesheet" type="text/css" href="./templates/editeur/css/styles4.css" />

    <script type="text/javascript" src="./tiny_mce/tiny_mce.js"></script>
    <script language="javascript" type="text/javascript">
    tinyMCE.init({
    mode : "exact",
    theme : "advanced",
    elements : "reponse ",
    debug : true
    })

    </script> </head>
    <body>


    <div id="site_main">

    <div id="site_entete">

    <div id="site_menuhaut">
    <ul>
    <li><a href="index.php">Déconnexion</a></li>
    <li><a href="liste.php?idsection=1">Contenu</a></li>
    <li><a href="liste.php?idsection=2">SEO</a></li>
    <li><a href="direct_objet.php?idsection=3">Profil</a></li>
    <li><a href="album.php?idsection=4">Albums</a></li></ul>

    </div>
    </div>
    <div id="site_corps">
    <div id="site_menuprincipal">
    <ul>
    <li><a href="liste.php?idrubrique=1&ressource=Faq">FAQ</a></li>
    <li><a href="liste.php?idrubrique=2&ressource=News">News</a></li>
    <li><a href="liste.php?idrubrique=3&ressource=Lot">Lots</a></li>
    <li><a href="liste.php?idrubrique=4&ressource=Science">Science</a></li>
    </ul>
    </div>

    <div id="site_contenu">
    <h1>Contenu :: FAQ</h1>
    <div class="comment">
    msg </div>
    <div id="lien_retour"><a href="liste.php?action=liste&ressource=Faq"><< Retour à la liste</a></div>
    <h2>Création d'une nouvelle question/réponse</h2>
    <script type="text/javascript" language="javascript">
    function updatePosition(data, method, elem)
    {
    if(window.ActiveXObject)
    {
    //Internet Explorer
    var FerTedObjc = new ActiveXObject("Microsoft.XMLHTTP") ;
    }//fin if
    else
    {
    //Mozilla
    var FerTedObjc = new XMLHttpRequest();
    }//fin else
    //dÈfinition de l endroit d affichage:
    var content = document.getElementById(elem);
    //si on envoie par la mÈthode get:
    if(method == "get")
    {
    if(data == "null")
    {
    //Ouverture du fichier sÈlectionnÈ:
    FerTedObjc.open("get", "ajax/position.php");
    }//fin if
    else
    {
    //Ouverture du fichier en methode get
    FerTedObjc.open("get", "ajax/position.php"+"?"+data, true);
    }//fin else
    }//fin if
    else if(method == "post")
    {
    //Ouverture du fichier en methode post
    FerTedObjc.open("post", "ajax/position.php");
    }//fin elseif
    FerTedObjc.onreadystatechange = function()
    {
    //tant que la rÈponse n est pas arrivÈ afficher l image d attente
    if (FerTedObjc.readyState < 4){
    content.innerHTML = 'attente de réception des données ...' + FerTedObjc.readyState;
    }
    else {
    switch (FerTedObjc.status)
    {
    case 200:
    content.innerHTML = FerTedObjc.responseText;
    break;
    case 404:
    alert("ERREUR: la page ajax/position.php n existe pas");
    break;
    case 500:
    alert("ERREUR 500");
    try {
    errorWin = window.open("", "errorWin");
    errorWin.document.body.innerHTML = FerTedObjc.responseText;
    }
    catch(e) {
    alert("An error occurred, but the error message cannot be" + " displayed because of your browser's pop-up blocker.\n" + "Please allow pop-ups from this Web site.");
    }
    break;
    default:
    alert("Error code " + FerTedObjc.status);
    }
    }
    }
    if(method == "get")
    {
    FerTedObjc.send(null);
    }//fin if
    else if(method == "post")
    {
    FerTedObjc.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    FerTedObjc.send(data+"&sqlTable=site_faq&sqlAttrRestriction=idpagecategorie&optionLibelle=question&optionLibelleMaxLength=40&rang_orig=1&assoc_orig=0");
    }//fin elseif
    }//fin fonction update
    </script>

    <script type="text/javascript" language="javascript">
    function validform() {
    var trouve = false;
    for(i=0;i<document.frm.afficher.length;i++) {
    if(document.frm.afficher[i].checked == true) {
    trouve = true;
    break;
    }
    }
    if ( trouve == false ) {
    alert("Vous devez sélectionner le champ Afficher");
    return false;
    }
    if (document.frm.idpagecategorie.value == "" ) {
    alert("Le champ Catégorie ne doit pas être nul!");
    return false;
    }
    if (document.frm.rang.value == "" ) {
    alert("Le champ Position ne doit pas être nul!");
    return false;
    }
    if (document.frm.question.value == "" ) {
    alert("Le champ Question ne doit pas être nul!");
    return false;
    }
    if (document.frm.reponse.value == "" ) {
    alert("Le champ Réponse ne doit pas être nul!");
    return false;
    }
    return true;
    }
    </script>


    <form method="post" action="?" id="frm" name="frm" enctype="application/x-www-form-urlencoded" onsubmit="return validform();" accept-charset="unknown" >
    <input type="hidden" id="formulaire" name="formulaire" value="ok" />
    <input type="hidden" id="action" name="action" value="creer" />
    <table class="form" >
    <tr ><td class="libelle" ><label for="afficher" >* Afficher: </label></td><td class="champ" ><input type="radio" id="afficher" name="afficher" value="1" checked="checked" /><legend >Oui </legend><input type="radio" id="afficher" name="afficher" value="0" /><legend >Non </legend></td></tr>
    <tr ><td class="libelle" ><label for="idpagecategorie" >* Catégorie: </label></td><td class="champ" >
    <select onchange="updatePosition('id='+this.value,'post','listeLieePosition');" id="idpagecategorie" name="idpagecategorie" >
    <option selected="selected" value="" >Choisissez une catégorie ...</option>
    <option value="80" >Achats | allemand</option>
    <option value="79" >Achats | anglais</option>
    <option value="78" >Achats | français</option>
    <option value="77" >Produits | allemand</option>
    <option value="76" >Produits | anglais</option><option value="75" >Produits | français</option>
    <option value="58" >Utilisation | allemand</option>
    <option value="38" >Utilisation | anglais</option>
    <option value="12" >Utilisation | Français</option>
    </select></td></tr>
    <tr ><td class="libelle" ><label for="rang" >* Position: </label></td>
    <td class="champ" ><div id="listeLieePosition" >
    <select id="rang" name="rang" >
    <option value="1" >Début de liste ... </option>
    </select></td></tr>
    <tr ><td class="libelle" ><label for="question" >* Question: </label></td>
    <td class="champ" >

    <!-- Textarea 'normal' sans tinymce - fonctionne correctement -->
    <textarea id="question" name="question" rows="6" cols="40" ></textarea></td></tr>
    <tr ><td class="libelle" ><label for="reponse" >* Réponse: </label></td><td class="champ" >

    <!-- Textarea avec tinymce. Ma fonction javascript (validForm) trouve le contenu de ce textarea vide au premier submit, et si je reclique une fois de plus, alors ça marche ... -->
    <textarea id="reponse" name="reponse" rows="20" cols="40" ></textarea></td></tr>
    <tr ><td ></td><td class="bouton" ><input type="submit" class="submit" value="Créer" /></td></tr></table>
    </form>
    </div>


    </div>
    </div>
    </body>
    </html>

Discussions similaires

  1. empecher le double submit
    Par Jphilip74 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 23/10/2014, 14h41
  2. Double submit d'un page JSP.
    Par thaundeadboss dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 02/05/2011, 16h20
  3. [Cookies] Obligation de double cliquer sur "Submit"
    Par PicVert dans le forum Langage
    Réponses: 2
    Dernier message: 26/12/2006, 18h30
  4. [Struts] Empêcher le double submit
    Par bidi dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/03/2006, 14h30

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