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
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
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
$("#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
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
async: false,
juste après la ligne
type: "POST",
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