Codeigniter - Inputs dependientes con codeigniter

 
Vista:

Inputs dependientes con codeigniter

Publicado por Fredy Ventura (2 intervenciones) el 04/09/2017 14:01:54
Hola, como estan? Estoy desarrollando una aplicación para final de semestre.

Lo que quiero hacer es lo siguiente, la ingresar un código en un input, se verifica que exista en la base de datos, si ese código existe me coloca la descripción de ese código en otro inputs.

CODIGO HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="row clearfix">
     <div class="col-sm-2">
         <div class="form-group form-float">
            <div class="form-line">
                <input type="text" class="form-control" id="aduana" name="aduana" pattern="[A-Za-z,.&]{4-16}" required>
                <label class="form-label">Aduana:</label>
            </div>
            <div class="help-info">Teledespacho</div>
        </div>
     </div>
     <div class="col-sm-3">
         <div class="form-group form-float">
            <div class="form-line">
                <input type="text" class="form-control" id="nombreAduana" name="nombreAduana" pattern="[A-Za-z,.&]{4-16}" required>
                <label class="form-label"></label>
            </div>
        </div>
     </div>
</div>

JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
$("#aduana").change(function() {
    $("#aduana").each(function() {
        aduana = $('#aduana').val();
        $.post("http://localhost/betania/tramite/verificAduana", {
            aduana : aduana
        }, function(data) {
            $("#nombreAduana").html(data);
        });
    });
})

FUNCION DEL CONTROLADOR
1
2
3
4
5
6
7
8
9
10
11
12
public function verificAduana()
{
	//$options = "";
	if($this->input->post('aduana'))
	{
		//echo '<script language="javascript">alert("entro al controlador");</script>';
		$aduana = $this->input->post('aduana');
		//verificamos si la aduana existe.
		$check=$this->db->query('SELECT  nombre_pais FROM paises where codPais=='.$aduana.'')->result();
 
	}
}

Lo que no he podido realizar es que desde el javascript pueda ingresar a la función del controlador y no sé cómo retornar el valor que encuentre en la base de datos al input nombreAduana

He aplicado un código similar que encontré en la web donde hacen lo mismo solo que con dos select.

Espero puedan ayudarme, de antemano gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de santi
Val: 23
Ha mantenido su posición en Codeigniter (en relación al último mes)
Gráfica de Codeigniter

Inputs dependientes con codeigniter

Publicado por santi (11 intervenciones) el 04/09/2017 19:22:59
Hola,

lo que puedes hacer es verificar el resultado del data, como por ejemplo en el controlador:

1
2
3
4
5
if($check == true){
    echo 1;
}else{
    echo 0;
}

Entonces el resultado de data será 1 o 0.

Y lo verificas con jQuery:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$("#aduana").change(function() {
    $("#aduana").each(function() {
        aduana = $('#aduana').val();
        $.post("http://localhost/betania/tramite/verificAduana", {
            aduana : aduana
        }, function(data) {
            if(data == 1){
                $("#nombreAduana").html(data);
            }
            else{
                'e resultado será 0';
            }
        });
    });
})
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Inputs dependientes con codeigniter

Publicado por Fredy Ventura (2 intervenciones) el 13/09/2017 13:38:23
Santi, muchas gracias por tu ayuda, me sirvió de mucho. Logré realizarlo.

Al final quedo así.

Función del controlador tramite [Codeigniter]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function verifica_aduana()
{
	if($this->input->post('aduana'))
	{
 
		$aduana = $this->input->post('aduana');
		//verificamos si la aduana existe.
		$check = $this->aduanas_model->infoAduana($aduana);
 
 
		foreach($check->result() as $fila)
		{
			if(isset($fila)){ ?>
				 <h5 style="color:blue" ><?=$fila->nombreAduana?></h5>
			<?php
			}
			else{
			?>
				 <h5 style="color:blue" ></h5>
			<?php
			}
		}
	}
}



codigo Js (archivo externo que lo he llamado prueba.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(function(){
    $("#aduana").change(function() {
        $("#aduana").each(function() {
            aduana = $('#aduana').val();
            $.post("../tramite/verifica_aduana", {aduana : aduana}, function(data) {
                if(data === null|| data===''){
                    alert('CODIGO DE ADUANA NO EXISTE\n intente de nuevo');
                    document.getElementById("aduana").value=null;
                    document.getElementById("aduana").focus();
                    $("#nombreAduana").html(data);
                }
                else{
                    $("#nombreAduana").html(data);
                }
 
            });
        });
    });
});


Codigo HTML

1
2
3
4
5
6
7
8
9
10
11
<div class="col-sm-2">
     <div class="form-group form-float">
             <div class="form-line">
                    <input type="text" class="form-control" id="aduana" name="aduana" pattern="[A-Za-z,.&]{4-16}" required>
                     <label class="form-label">Aduana:</label>
             </div>
             <div class="help-info">Teledespacho</div>
      </div>
 </div>
<div class="col-sm-3" id="nombreAduana">
</div>


En síntesis lo que hice fue, cuando cambia el valor de input “aduana”, compruebo si ese código existe en la base de datos. Si el valor existe me retorna el nombre de aduana y se la asigno a una etiqueta <h5> que posteriormente se la asigno al div “nombreaduana”, y lo cargo desde el JavaScript con $("#nombreAduana").html(data);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar