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

AJAX Discussion :

[AJAX] Validation formulaire ajax


Sujet :

AJAX

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 139
    Par défaut [AJAX] Validation formulaire ajax
    Bonjour,

    J'utilise ajax avec prototype et scriptaculous.
    J'ai un formulaire à valider et je voudrais tester si la valeur saisie dans le champ de login existe bien dans la base de donnée.

    Pour ce test-là, je fais
    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
     
    var ExistEmailFormFieldConstraint = Class.create(FormFieldConstraint, {
    	validate: function(value){
    		var retourAjax = false;
     
    		var result = new Ajax.Request(
    				this.options.url,{
    					method: 'get',
    					asynchronous:true,
    					parameters: {email: value},
    					onComplete: function(originalRequest){
    		                reponse = originalRequest.responseText;
    		                if(reponse == "")
    		                	retourAjax = true;
    					}
    				}
    			);
     
    		return retourAjax;
    	}
    });
    L'url retourne une réponse vide ou une valeur pour dire si le login existe déjà.

    Le problème c'est que quand asynchonous est à true, retourAjax est toujours à true.
    Quand je mets asynchrounous à false, retourAjax prend bien la bonne valeur mais à chaque fois que je saisi quelque chose des caractères sont avalés.

    Que faire pour avoir à la fois la bonne valeur sans que les caractères soient avalés?

    Voilà ce que je fais pour valider le formulaire:
    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
     
    <script type="text/javascript">
    <!--
     
    var userCreateAccountForm = new FormValidator("formTab", true);
    var fv1 = new Array();
     
    fv1.push( new MandatoryFormFieldConstraint("login", { label: $("crea_mail"), errorMessage: '<noheto:str escapeJS="true"><noheto:message bundle="${frontBundle}" key="formulaire.error.email.empty" /></noheto:str>' } ));
    fv1.push( new PatternFormFieldConstraint("login", { label: $("crea_mail"), errorMessage: '<noheto:str escapeJS="true"><noheto:message bundle="${frontBundle}" key="formulaire.error.email.syntax" /></noheto:str>', pattern: /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/ } ));
     
    fv1.push( new ExistEmailFormFieldConstraint("login", { label: $("crea_mail"), errorMessage: '<noheto:str escapeJS="true"><noheto:message bundle="${frontBundle}" key="formulaire.error.exist.account" /></noheto:str>' ,url :'<noheto:url value="/front/common/head/ajax/ajaxemailisvalid.jspz"/>'} ));
     
     
    userCreateAccountForm.addFieldsConstraints(fv1); 
     
     
    //-->
    </script>
    Merci d'avance pour votre aide

    PS : ne pas faire attention aux tags noheto qui provient du cms utilisé mais qui n'influence pas sur le problème

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 139
    Par défaut
    j'ai modifié mon code pour arriver avec ceci

    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
     
    var ExistEmailFormFieldConstraint = Class.create(FormFieldConstraint, {
    	initialize : function($super, fieldName, options) {
    		this.lastValid = true;
    		$super(fieldName, options);
    	},
    	validate: function(value){
    		var retourAjax = true;
    		var result = new Ajax.Request(
    				this.options.url,{
    					method: 'post',
    					parameters: {email: value},
    					onComplete:this.checkUnicity.bindAsEventListener(this)
    				}
    			);
    		return this.lastValid;
    	},
    	checkUnicity: function(response){
    		var that = this;
    		if (response.responseText == ""){
    			that.lastValid = true;
    		}
    		else{
    			that.lastValid = false;
    		}
     
    	}
     
    });
    Et maintenant, ça a l'air de mieux marcher.

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

Discussions similaires

  1. [Prototype] Validation formulaire ajax
    Par xavier1936 dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 22/04/2011, 12h49
  2. [AJAX] Validation formulaire sans alert()
    Par Fre3z69 dans le forum AJAX
    Réponses: 6
    Dernier message: 17/12/2010, 04h14
  3. [AJAX] Validation Formulaire par ajax
    Par freak999 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2009, 22h49
  4. [AJAX] Valider formulaire avec touche Entrer
    Par sff dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/09/2008, 13h36
  5. Validation formulaire Ajax et Pop-up
    Par PiXeL' dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 06/05/2008, 10h42

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