Codigo del view
Código:
Controlador:<script type="text/javascript"> $(document).ready(function(){ //utilizamos el evento keyup para coger la información //cada vez que se pulsa alguna tecla con el foco en el buscador $(".productos").keyup(function(){ //en info tenemos lo que vamos escribiendo en el buscador var info = $(this).val(); //hacemos la petición al método autocompletar del controlador autocompletado //pasando la variable info $.post('buscar_productos',{ info : info, tipo: $("#tipo:checked").val()}, function(producto){ //si autocompletado nos devuelve algo if(producto != '') { //en el div con clase contenedor mostramos la info $(".contenedor_productos").html(producto); }else{ $(".contenedor_productos").html(''); } }) }) $(".contenedor_productos").find("a").live('click',function(e) { e.preventDefault(); $("input[name=productos]").val($(this).text()); $(".contenedor_productos").html(''); }) $(".productos").change(function(){ var prod_precio = $(this).val(); $.post('buscar_precio',{ prod_precio : prod_precio }, function(costo){ $(".precio").html("costo"); //$("input[name=precio]").val(costo); }) }) }) </script> </head> <body> <form id="form_add_ps"> <p> <label>Tipo:</label> <input type="radio" name="tipo" id="tipo" value="1" checked="checked"> Producto <input type="radio" value="2" name="tipo" id="tipo"> Servicio </p> <p> <label>Nombre:</label> <input type="text" name="productos" id="productos" maxlength="15" onpaste="return false" class="productos" /> </p> <p><div class="contenedor_productos"></div></p> <p> <label>Precio:</label> <input type="text" class="precio" disabled name="precio" id="precio" style="width:220px"> </p> <p> <label>Cantidad:</label><br clear="all"> <input type="text" name="cantidad" id="cantidad" class="text number required" style="width:220px"> </p> <p align="center"><input type="submit" class="submit mid" id="aceptar" value="Aceptar" /></p> </form> </body> </html>
Código:
Model:public function buscar_productos() { //si es una petición ajax y existe una variable post //llamada info dejamos pasar if($this->input->is_ajax_request() && $this->input->post('info')) { $abuscar = $this->security->xss_clean($this->input->post('info')); if($_POST['tipo'] == 1){ $search = $this->autocompletado_model->buscador_productos($abuscar); }else{ $search = $this->autocompletado_model->buscardor_servicio($abuscar); } //si existe algún resultado lo devolvemos //si search es distinto de false significa que hay resultados //y los mostramos con un loop foreach if($search !== FALSE) { foreach($search as $fila) { ?> <p><a href=""><?php echo $fila->producto ?></a></p> <?php } //en otro caso decimos que no hay resultados }else{ ?> <p><?php echo 'No hay resultados' ?></p> <?php } } }
Código:
public function buscador_productos($abuscar) { $this->db->select('*'); $this->db->like('producto',$abuscar,'after'); $resultados = $this->db->get('producto', 12); if($resultados->num_rows() > 0) { return $resultados->result(); //en otro caso devolvemos false }else{ return FALSE; } }