Bonjour,

Je dois contrôler un email dans un formulaire par le biais du js.
Voici les contrôles que je dois effectuer :
  1. champ vide
  2. structure correcte
  3. DNS correct



Pour cela, j'utilise les "rules".

Voici mon code js
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}")
        }
    }
});
Voici mon code php
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 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