[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:
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:
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