Do swojego skryptu chcę dodać walidację emaila (sprawdzanie czy jest zajęty)
Robię według wskazówek, które znalazłem tutaj:
http://docs.jquery.com/Plugins/Validation/...remote#examplesTak wygląda mój kod:
$("#personaledit").validate({
errorPlacement: function (error, element) {
error.css("color", "red");
error.insertAfter(element);
},
rules:{
name:{
required: true,
minlength: 3
},
surname:{
required: true,
minlength: 3
},
birthdate:{
required: true,
minlength: 8
},
postcode:{
required: true,
minlength: 5
},
street:{
required: true,
minlength: 3
},
country:{
required: true,
minlength: 3
},
email:{
required:true,
email:true,
remote: "./includes/ajax.php?module=editprofile"
},
phone:{
required: true,
minlength: 7
},
city:{
required: true,
minlength: 3
}
},
messages:{
name:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,3)}"
},
surname:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,3)}"
},
birthdate:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,8)}"
},
street:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,3)}"
},
postcode:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,5)}"
},
country:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,3)}"
},
email:{
required: "{$lang.required}",
email: "{$lang.emailIncorrect}",
remote: jQuery.format({literal} "{0} is already in use" {/literal})
},
phone:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,7)}"
},
city:{
required: "{$lang.required}",
minlength: "{sprintf($lang.pasteXcharacters,3)}"
}
}
});
Klikam na "submit", przeglądarka wysyła prawidłowo dane do skryptu, skrypt prawidłowo wyświetla wartość false/ lub true. Wiem, że to działa, bo w widzę to w opera->zbadaj element->sieć). Jednak następnie walidator nic sobie z tego nie robi. Błędy się nie wyświetlają (tzn. z pozostałych pól się wyświetlają, z tego emaila nie)
Oto kod php (on jest chyba okej)
public function checkEmail($email, $user_id)
{
$this->db->query('SELECT `id` FROM `users` WHERE `email`=?',array($email)); $r = $this->db->getRows();
if(isset($r[0
]) && $r[0]['id'] != $user_id)//jeśli taki email już istnieje w bazie danych i jego posiaaczem nie jest user_id {
return 'false';
}
else
{
return 'true' ;
}
}
(...)
public function getAjax()
{
if(isset($_REQUEST['email'])) {
echo $this->checkEmail($_REQUEST['email'], $_SESSION['user_id']); }
}
W czym może być problem ?