que estoy tratando de averiguar cómo puedo convertir esto:Uso de la función remota de validación jQuery
$('#username').blur(function(){
$.post('register/isUsernameAvailable',
{"username":$('#username').val()},
function(data){
if(data.username == "found"){
alert('username already in use');
}
}, 'json');
});
en algo parecido a esto:
rules: {
username: {
minlength: 6,
maxlength: 12,
remote: {
url: 'register/isUsernameAvailable',
type: 'post',
data: {
'username': $('#username').val()
}
}
}
Sin embargo estoy teniendo un duro hora de terminarlo. Lo que quiero es en lugar de la alerta para que muestre el mensaje de error, pero puedo configurar el mensaje dentro de los mensajes de validación de jquery reales.
http://docs.jquery.com/Plugins/Validation/Methods/remote#options
ACTUALIZACIÓN:
Por alguna razón no es hacerlo como un POST su haciéndolo como una petición GET y no está seguro de por qué. Aquí está el código de actualización:
rules: {
username: {
minlength: 6,
maxlength: 12,
remote: {
url: 'register/isUsernameAvailable',
dataType: 'post',
data: {
'username': $('#username').val()
},
success: function(data) {
if (data.username == 'found')
{
message: {
username: 'The username is already in use!'
}
}
}
}
},
ACTUALIZACIÓN 2:
Ahora estoy llegando a alguna parte he vuelto a conseguir la solicitud POST. Tengo dos problemas más. Una de ellas es el hecho de que para que se realice otra solicitud POST, el usuario debe actualizar el formulario. Y el último problema es que si se encuentra el nombre de usuario devuelto, NO muestra el mensaje de error.
rules: {
username: {
minlength: 6,
maxlength: 12,
remote: {
type: 'post',
url: 'register/isUsernameAvailable',
data: {
'username': $('#username').val()
},
dataType: 'json',
success: function(data) {
if (data.username == 'found')
{
message: {
username: 'The username is already in use!'
}
}
}
}
},
UPDATE:
public function isUsernameAvailable()
{
if ($this->usersmodel->isUsernameAvailable($this->input->post('username')))
{
return false;
}
else
{
return true;
}
}
ACTUALIZACIÓN 4:
controlador:
public function isUsernameAvailable()
{
if ($this->usersmodel->isUsernameAvailable($this->input->post('username')))
{
return false;
}
else
{
return true;
}
}
public function isEmailAvailable()
{
if ($this->usersmodel->isEmailAvailable($this->input->post('emailAddress')))
{
return false;
}
else
{
return true;
}
}
MODELO:
/**
* Check if username available for registering
*
* @param string
* @return bool
*/
function isUsernameAvailable($username)
{
$this->db->select('username');
$this->db->where('LOWER(username)=', strtolower($username));
$query = $this->db->get($this->usersTable);
if ($query->num_rows() == 0)
{
return true;
}
else
{
return false;
}
}
/**
* Check if email available for registering
*
* @param string
* @return bool
*/
function isEmailAvailable($email)
{
$this->db->select('email');
$this->db->where('LOWER(email)=', strtolower($email));
$query = $this->db->get($this->usersTable);
if($query->num_rows() == 0)
{
return true;
}
else
{
return false;
}
}
que incluía un enlace a la función de control remoto. –
¿Puede cambiar el código del lado del servidor? –
por qué debería hacerlo. Estoy trabajando con el lado js. –