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
Voici mon code php
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 $("#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}") } } });
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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 lignejuste après la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part async: false,mais il n'y a pas de changement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part type: "POST",
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
Partager