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
L'url retourne une réponse vide ou une valeur pour dire si le login existe déjà.
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; } });
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:
Merci d'avance pour votre aide
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>
PS : ne pas faire attention aux tags noheto qui provient du cms utilisé mais qui n'influence pas sur le problème
Partager