Reputation: 232
I have searched around here in stackoverflow and to websites in general, but after trying to apply every fix, it doesn't seem to work (validation doesn't appear in my form). I'm using this library (jqueryvalidation.org) for my form and using the remote feature that connects to a controller which links to the model containing the database check.
See the code below and reply back if anything is not clear :)
Functions Controller (email_exists method) - /application/controllers/Functions.php:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Functions extends CI_Controller {
public function index() {
show_404();
}
public function email_exists() {
if (isset($_POST['email'])) {
$this->load->model('account_model');
if ($this->account_model->email_exists($this->input->post('email')) == TRUE) {
echo 'TRUE';
} else {
echo 'FALSE';
}
}
}
}
Account Model (email_exists method) - /application/models/Account_model.php:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Account_model extends CI_Model {
public function email_exists($email) {
$query = $this->db->select('email_address')->get_where('accounts', array('email_address' => $email));
if ($query->num_rows() == 1) {
return TRUE;
} else {
return FALSE;
}
}
}
jQuery Validation Rules (part)
rules: {
'email_address': {
required: true,
email: true,
remote: {
url: "/functions/email_exists",
type: "post",
data: {
email: function() {
return $("#email").val();
}
}
}
}
Form Input (email section - part of the file):
$input_email_address = array('name' => 'email_address',
'type' => 'email',
'id' => 'email_address',
'class' => 'form-control',
'value' => $this->input->post('email_address'),
'autofocus' => 'autofocus');
echo form_input($input_email_address);
Any help would be really appreciated, I have been playing with it since the morning but no luck. Thank you in advance :)
Upvotes: 0
Views: 1832
Reputation: 169
The selecter is not the same as the input field.
#email != #email_address
rules: {
'email_address': {
required: true,
email: true,
remote: {
url: "http://YOUR_URL",
type: "post",
data: {
email: function() {
return $("#email_address").val();
}
}
}
}
Upvotes: 1
Reputation: 519
I better say use jQuery.validator.addMethod('isEmailExists'....
And rules like
email: {
required: true,
email: true,
isEmailExists: true
},
Upvotes: 0