简体   繁体   中英

CodeIgniter pagination onclick

Good day, Quick question,

I am using CI's pagination to my project, it works perfectly, but i wanted to add some filters on it.

ie I need to catch its click event. although I can catch already its click event using this

 $("ul.pagination > li a[href]").click(function(e){
      loadingStart();
 });

my problem is it still redirect to the next page,

what I need is something like this.

 if(myVar == 0) {
      //do not redirect
 } else  {
      //redirect.
 }

Use e.preventDefault(); and then execute your custom function

If you want filter for pagination that use $_GET ... no redirect in js (You can not undo, etc.).

I show you how I do:

Controller:

/**
Example list
**/
public function index()
{
  $page = ($this->input->get('page') AND $this->input->get('page')>1)?(intval($this->input->get('page'))-1)*9:1; #9 item for page

  #where if isset($_GET)
  $where = array();
  if($this->input->get('city')) {
    $where['users.city'] = $this->input->get('city');
  }
  if($this->input->get('street')) {
    $where['users.street'] = $this->input->get('street');
  }
  #load model 
  $this->load->model('users_m');
  $view_data['users'] = $this->users_m->GetAll($where,$page,array('users.register_date'=>'DESC'))->result();
  //pagination library
  $this->load->library('pagination');
  $config['base_url'] = site_url('/users');
  $config['total_rows'] = $this->users_m->GetAll($where,0)->num_rows();
  $config['per_page'] = 9;
  $config['full_tag_open'] = "<ul class='pagination'>";
  $config['full_tag_close'] ="</ul>";
  $config['num_tag_open'] = '<li>';
  $config['num_tag_close'] = '</li>';
  $config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>";
  $config['cur_tag_close'] = "<span class='sr-only'></span></a></li>";
  $config['next_tag_open'] = "<li>";
  $config['next_tagl_close'] = "</li>";
  $config['prev_tag_open'] = "<li>";
  $config['prev_tagl_close'] = "</li>";
  $config['first_tag_open'] = "<li>";
  $config['first_tagl_close'] = "</li>";
  $config['last_tag_open'] = "<li>";
  $config['page_query_string'] = TRUE;
  $config['query_string_segment'] = 'page';
  $config['reuse_query_string'] = TRUE;
  $config['use_page_numbers'] = true;
  $config['last_tagl_close'] = "</li>";
  $this->pagination->initialize($config);
  //variable to template
  $view_data['pagination'] = $this->pagination;

  $this->load->view('/users/index',$view_data);
}

Model: users_m

/**
* Get all users example
**/
public function GetAll($where=array(),$page=1,$order_by=array(),$limit=9)
{

  $this->db->select('users.*');
  #order by
  if(count($order_by)>0)
  {
    foreach($order_by as $key=>$value)
    {
      $this->db->order_by($key,$value);
    }
  }
  $this->db->where($where);
  #show all (for pagination calculate)
  if($page==0) return   $this->db->get_where('users',$where);
  #show single page
  return    $this->db->get_where('users',$where,$limit,(($page==1)?$page-1:$page));
}

And view:

<div id="search_bar">
<?php echo form_open(site_url('/users'),array('class'=>'form-inline','method'=>'get'));?>
<div class="form-group col-lg-2 col-md-4 col-sm-4">
  <select name="type" class="form-control">
    <option value="" disabled="disabled" selected="selected" >City</option>
    <option value="1" <?php if(set_value('city')==1) echo 'selected';?>>London</option>
    <option value="2" <?php if(set_value('city')==2) echo 'selected';?>>Warsaw</option>
  </select>
</div>
<button type="submit" class="btn btn-primary" style="margin-top:-10px;">Search</button>
<?php echo form_close();?>
</div>
<hr/>
<div id="grid-user" class="row">
  <table>
    <tbody>
      <?php foreach($users as $user):?>
        <tr>
          <td><?php echo $user->id;?></td>
          <td><?php echo $user->firstname;?></td>
          <td><?php echo $user->lastname;?></td>
          <td><?php echo date("d.m.Y",strtotime($user->register_date));?></td>
        </tr>
      <?php endforeach;?>
    </tbody>
  </table>
</div>
<div class="row">
  <div class="col-lg-12">
    <div style="float:right;"><?php echo $pagination->create_links();?></div>
  </div>
</div>

I sorry for my english. This is example (not checked, written from memory).

Try it :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM