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