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

jQuery Discussion :

Affichage redondant d'un texte avec JQuery


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut Affichage redondant d'un texte avec JQuery
    Bonjour à toutes et à tous,

    J'ai effectué un test sur mon formulaire d'ajout d'annonce disposant d'un captcha, je constate que si l'utilisateur fait x tentatives fausses de saisie du code du captcha et qu'il saisisse enfin le bon code alors le message de réussite s'affiche x fois.
    Pourtant j'ai mis ce message dans un .text() et non dans un .append()

    Code javascript : 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
     
    /** script permettant l'affichage de la zone d'ajout d'annonces **/
    //le script a été modifié pour permettre l'upload de photo en requete AJAX 
    //IL FAUT ABSOLUMENT PASSER PAR UN IFRAME sinon c'est impossible
    //on récupère ainsi dans les balises 'iframe' lors du chargement, le contenu html des balises <span> ayant pour id 'reponse'
    //La balise <span> aura la réponse à traiter 
    $(function(){
    	// le chargement de la réponse du serveur se fera lors du clic sur le bouton de soumission du formulaire  
    	// ET NON AU CHARGEMENT DE LA PAGE!
    	$(":submit").click(function() { 
    		$("#loader").show();
    		$("#iframe").load(function(event){
    			event.preventDefault();				
    			var rep = $(this).contents().find('#reponse').html();								
    			success : 							
    				if(rep=="ok") {
    					$("#loader").hide(); // on cache le loader d'attente Ajax					
    					$('.annonceSent').show("fast").text("L'upload s'est correctement effectué. Un email de confirmation a été envoyé");										
    					$('.annonceSent').fadeOut(3000);				
    					//$('#annonceFormContainer').fadeOut(4000);
    					$(":input", "#annonceForm").not(':submit').val("");	
    					$("#captchaImage").attr("src", "image.php?text");// permet de regénérer uniquement que le captcha sans vider le formulaire				
    				}
    				else{
    					if(rep.substr(0,7)=="captcha") {
    					$("#loader").hide(); // on cache le loader d'attente Ajax				
    					$('.annonceSent').show().text("Veuillez saisir CORRECTEMENT le code du captcha!");
    					$('#captcha').val("");
    					$('#captcha').focus;							
    					$('.annonceSent').fadeOut(5000);
    					//$("#reponse").hide();		
    					$("#captchaImage").attr("src", "image.php?text");// permet de regénérer uniquement que le captcha sans vider le formulaire							
    				} // fin if(rep == "Erreur")
    				if(rep.substr(0,6)=="Erreur") {
    					$("#loader").hide(); // on cache le loader d'attente Ajax				
    					$('.formErreur').show().text("Erreur lors de l'upload!");
    					$('.formErreur').fadeOut(5000);					
    				} // fin if(rep == "Erreur")
    				if(rep.substr(0,7)=="Fichier") {
    					$("#loader").hide(); // on cache le loader d'attente Ajax
    					$('.formErreur').show().text("Le fichier uploadé est trop volumineux!");
    					$('.formErreur').fadeOut(5000);
    				} // fin if(rep == "fichier")	
    				if((rep.substr(0,4)=="vide") || (rep.substr(0,7)=="Absence")) {
    					$("#loader").hide(); // on cache le loader d'attente Ajax
    					$("#titre").focus();
    					$('.formErreur').show().text("Veuillez remplir tous les champs!");
    					$('.formErreur').fadeOut(5000);						
    				} // fin if(rep == "vide"ou "Absence")	
    				//window.location.reload(); //en cas d'erreur, il faut recharger la page entièrement pour regénérer correctement le CAPTCHA
     
     
    				//ne fonctionne pas correctement : 
    				//le captcha est bien regénéré mais le code n'est pas valide! (j'ai l'impression qu'il y a un affichage trop rapide du captcha à saisir)
    				//pour le tester, rajouter un span avec id captchaImage 
    			} // fin else
     
    		}); // fin $("#iframe")		
    	}); // fin $(":submit").click()
    });// fin $(function())

    Merci d'avance.
    Transact.

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    je ne vois pas de preventDefault() ni de return false lors du submit ...
    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 chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    J'ai mis un e.preventDefault() et un return false mais cela ne change rien.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    je ne vois pas de preventDefault() ni de [ ou un ] return false lors du submit ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $( ":submit" ).click( function(){ 
    
    	$( "#loader" ).show();
    
    	$( "#iframe" ).load( function( event ){
    		
    	});
    	
    	return false;
    });
    Le sélecteur $( ":submit" ) est bon ?

    EDIT, ok, http://api.jquery.com/submit-selector/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    En utilisant la méthode de danielhagnoul cela ne fonctionne toujours pas , le $(":submit") est bon puisqu'avant le message était récupéré.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Personnellement, j'ai du mal à comprendre ce que tu fais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#iframe").load(function(event)
    Je suppose que #iframe correspond à une iframe et que celle-ci pointe sur le même domaine, mais tu sembles agglomérer dans .load() la méthode correspondant à l'événement (utilisation de event) et celle correspondant au raccourci AJAX (utilisation de success).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Dans le formulaire HTML (non transmis dans ce post), je dois envoyer sur le serveur des données de type FILE (upload de fichier) et des champs input type="text". L'inconvénient est que les champs de type FILE ne sont pas transmis en AJAX, pour "duper" le serveur j'ai utilisé une solution de contournement récupérant la réponse du serveur que j'intègre dans une iframe.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <iframe src="#" id ="iframe" name ="iframe" width = "900px" height ="100px"></iframe>										
    				<form name="ajoutAnnonce" id="annonceForm" enctype="multipart/form-data" action="#" method="post" target="iframe">
    ....
    </form>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Message à traiter pour le jquery			
    echo "<span id='reponse'>ok</span>";
    echo "<span id='reponse'>Erreur</span>";

    Le problème est que le message de réussite s'affiche x fois si il y a eu x tentative de saisie du captcha.

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

Discussions similaires

  1. [2.x] [Ajax] Retour au format "text" avec jQuery
    Par Viduc dans le forum Symfony
    Réponses: 2
    Dernier message: 02/11/2012, 09h43
  2. Remplir des input text avec Jquery
    Par Devlin111 dans le forum jQuery
    Réponses: 1
    Dernier message: 21/06/2012, 14h07
  3. [JSTL 1.0.6] affichage d'un texte avec des retour chariots
    Par clettebou dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/08/2006, 10h16
  4. Réponses: 3
    Dernier message: 05/05/2006, 18h36
  5. Probleme d'affichage du curseur dans un chp texte avec firef
    Par dadovb dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/10/2005, 12h31

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