Règle de vérification d'un e-mail
Bonjour,
Je dois contrôler un email dans un formulaire par le biais du js.
Voici les contrôles que je dois effectuer :
- champ vide
- structure correcte
- DNS correct
Pour cela, j'utilise les "rules".
Voici mon code js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| $("#f_profil").validate({
rules: {
email: {
required: true, // premier contrôle : champ vide
email: true, // deuxième contrôle : structure correcte
remote: { // troisième contrôle : DNS correct
url: SERV+"/profile/ajax/validate/",
type: "POST",
data: {
email: function() {
return $("#email").val();
}
}
}
},
},
messages: {
email: {
required: REQUIRED,
email: "email invalide",
remote: $.validator.format("{0}")
}
}
}); |
Voici mon code php
Code:
1 2 3 4 5 6 7 8 9 10
| public function ajaxAction () {
$return = null;
if($this->getRequest()->getParams('validate', null)) {
if($this->getRequest()->getPost('email', null)) :
$return = $this->validator('email', null, 'email');
endif;
$this->view->return = ($return) ? '"email invalide"' : '"true"';
}
} |
Le script fonctionne correctement partout sauf pour safari sur mac. (safari pc et iphone, pas de problème).
Sur safari version mac, le premier et le deuxième contrôle fonctionnent. Par contre le troisième ne fonctionne pas.
J'ai lu que les requêtes ajax étaient par défaut asynchrone et que des problèmes pouvaient en découler.
src : http://www.eric-pidoux.com/actu/safa...avascript-ajax
J'ai rajouté dans le "remote" la ligne juste après la ligne mais il n'y a pas de changement.
Peut-être elle est mal placée ?
J'ai essayé aussi d'utiliser addMethod mais comme je ne suis pas très calé en ajax, cela ne fonctionne pas.
Si vous voyez mon erreur ou si vous avez une alternative, je suis preneur.
Merci