Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Lista dependiente

Estas en el tema de Lista dependiente en el foro de Javascript en Foros del Web. Saludos amigos; Tengo tres listas en un formulario PHP; las cuales las he colocado de la siguiente manera: Código PHP: <select id="listaA" name="listaA">     <option value=""></option>      <?php  include( ...
  #1 (permalink)  
Antiguo 15/07/2013, 14:37
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Pregunta Lista dependiente

Saludos amigos;

Tengo tres listas en un formulario PHP; las cuales las he colocado de la siguiente manera:
Código PHP:
<select id="listaA" name="listaA">
    <option value=""></option>
    <?php include('/scripts/listaA.php'); ?>
</select>
Esta primera lista determina que valores de la segunda lista (listaB) se debe mostrar; inicialmente cuando el formulario se carga esta lista esta inhabilitada, la idea es que dependiendo del valor que seleccione el usuario en la listaA se ejecute un script (que no sea JS) para buscar los registros de que correspondan con la selección y se carge la segunda lista.

Entiendo que lo puedo hacer con ajax pero no se como hacerlo?

Espero haberme explicado.

Gracias mil por cualquier ayuda.
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #2 (permalink)  
Antiguo 15/07/2013, 15:07
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 6 años, 2 meses
Puntos: 46
Respuesta: Lista dependiente

si js es lo mejor para eso porq no quieres JS
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #3 (permalink)  
Antiguo 15/07/2013, 15:39
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: Lista dependiente

Cita:
Iniciado por KATHYU Ver Mensaje
si js es lo mejor para eso porq no quieres JS
Hola KATHYU; muchisimas gracias por responder.

Te cuento que tengo los script y funcionan muy bien con JS pero como lo tengo que incluir dentro de un formulario que es un componente de JOOMLA; por alguna razon el JS no se ejecuta y no se porque.

Entonces prefiero cambiarlo por AJAX que supuestamente funciona mejor pero aun no encuentro nada.

Si sabes de algo, te lo agradeceré muchiiiiiisimo...!!!

Feliz tarde y gracias de nuevo.
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #4 (permalink)  
Antiguo 15/07/2013, 15:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.946
Antigüedad: 11 años, 1 mes
Puntos: 2183
Respuesta: Lista dependiente

Si preguntas al buscador: selects dependientes ajax, te lleva a esto: https://www.google.com.mx/#sclient=p...w=1680&bih=889

El primer resultado parece ser lo que necesitas.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 15/07/2013, 15:44
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 6 años, 2 meses
Puntos: 46
Respuesta: Lista dependiente

Cita:
Iniciado por Triby Ver Mensaje
Si preguntas al buscador: selects dependientes ajax, te lleva a esto: [url]https://www.google.com.mx/#sclient=psy-ab&q=site:forosdelweb.com+aporte+selects+dependien tes+ajax&oq=site:forosdelweb.com+aporte+selects+de pendientes+ajax&gs_l=hp.3...1371.11792.0.12159.53. 53.0.0.0.0.236.7153.0j51j2.53.0....0...1c.1.19.psy-ab.UdSb6NrIiUA&pbx=1&bav=on.2,or.r_cp.r_qf.&bvm=bv .48705608,d.aWM&fp=4fdd548a2b02943d&biw=1680&bih=8 89[/url]

El primer resultado parece ser lo que necesitas.
Yo estoy utilizando xajax basicamente cual seria la diferencia del ajax o es lo ismo ???
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #6 (permalink)  
Antiguo 15/07/2013, 15:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 3 meses
Puntos: 2135
Respuesta: Lista dependiente

AJAX no es un lenguaje es una forma de usar unos componentes pero se hace en Javascript por lo que cualquier solución que quieras usar en AJAX va a usar Javascript...
  #7 (permalink)  
Antiguo 15/07/2013, 16:22
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: Lista dependiente

Saludos amigos,

A ver les explico..
Resulta que buscando en Google; encontré el ejemplo de listas dependientes de paises, estados y ciudades.

Lo descargue me estudié el código, lo entendío y lo puse a funcionar.

Pero cuando me voy al formulario del componente de JOOMLA e incluyo el script, simplemente este no funciona, es decir, no se cargaba ni la primera lista.

Entonces continuando en la busqueda encontré la forma de que se carga la primera lista, esto fue así:
Código PHP:
<select id="listaA" name="listaA">
    <option value=""></option>
    <?php include('/scripts/listaA.php'); ?>
</select>
El problema es que no se ahora como hacer para identificar que valor seleccionó el usuario en esa lista para que (con ese valor) hacer el query en la segunda tabla filtrando por ese valor y cargando en la lista.

Lo que se me ocurre es que lo siguiente:
Código PHP:
<select id="listaA" name="listaA">
    <option value=""></option>
    <?php include('/scripts/listaB.php?val=idlistaA'); ?>
</select>
Donde el parametro val es el id pero como le paso el valor a listaB?

Gracias mil.....
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #8 (permalink)  
Antiguo 15/07/2013, 19:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 3 meses
Puntos: 2135
Respuesta: Lista dependiente

No puedes hacerlo como te dije más arriba PHP y Javascript no co-existen en el mismo ámbito, PHP se ejecuta en el servidor, y Javascript en el navegador, es por eso que no puedes hacerlo de esa manera, es forzoso que uses AJAX para cargar la lista usando Javascript.

Si no te funciona en Joomla a lo mejor estas o te falta incluir algún script, revisa eso, usa la consola de errores de tu navegador.

Saludos.
  #9 (permalink)  
Antiguo 16/07/2013, 07:00
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: Lista dependiente

Cita:
Iniciado por GatorV Ver Mensaje
No puedes hacerlo como te dije más arriba PHP y Javascript no co-existen en el mismo ámbito, PHP se ejecuta en el servidor, y Javascript en el navegador, es por eso que no puedes hacerlo de esa manera, es forzoso que uses AJAX para cargar la lista usando Javascript.

Si no te funciona en Joomla a lo mejor estas o te falta incluir algún script, revisa eso, usa la consola de errores de tu navegador.

Saludos.
Buen día amigo GatorV;

Anoche casualmente estaba pensando en ello, es decir, si ya tengo el script y me funciona en un formulario porque no funciona dentro de JOOMLA, tiene que haber algo y eso es lo que me propongo a identifcar hoy.

Resolviendo eso habría terminado la tarea.

Cuando termine les comentaré como se resolvío el problema de manera que quede como registro y ayuda para futuras inquietudes.

Que tengan un excelente día....
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #10 (permalink)  
Antiguo 16/07/2013, 10:22
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Pregunta Respuesta: Lista dependiente

Ok mis amigos les voy a contar.

Probando la ejecución del JS dentro del formulario coloque una simpe funcion que hace un alert.

Código:
function alerta()
	{
		alert("ENTRO");
	}
En el selector coloque el llamado a la funcion en un change

Código PHP:
<select id="country" name="country" class="inputbox" onchange="alerta();">
<option value=""></option>
<?php include(JPATH_SITE '/administrator/components/com_maqmahelpdesk/html/scripts/cargar-paises.php'); ?>    
</select>
Cuando hago un cambio en la selección la función se ejecuta sin problemas; entonces coloque el script para que carga los estados, esta funcion se llama dep-edo y la llamo en el evento change del select.

Código:
function dep-edo()
	{
	alert("ENTRO");
	var code = $jMaQma("#country").val();
	$jMaQma.get("JPATH_SITE . '/administrator/components/com_maqmahelpdesk/html/scripts/dependencia-estado.php", { code: code },
		function(resultado)
			{
			if(resultado == false)
				{
				alert("Error al cargar los estados");
				}
			else
				{
				$("#state").attr("disabled",false);
				document.getElementById("state").options.length=1;
				$('#state').append(resultado);			
				}
			}
		);
	}
Y pues no pasa nada la funcion no se ejecuta ni obtengo algun mensaje de error.

Alguna ayuda o sugerencia?

Gracias mil por adelantado.
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #11 (permalink)  
Antiguo 16/07/2013, 10:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 3 meses
Puntos: 2135
Respuesta: Lista dependiente

Creo el problema es este, tienes que evaluar el PHP a nivel de JS:
Código PHP:
Ver original
  1. $jMaQma.get("<?php echo JPATH_SITE . '/administrator/components/com_maqmahelpdesk/html/scripts/dependencia-estado.php'; ?>", { code: code }

Saludos.
  #12 (permalink)  
Antiguo 16/07/2013, 12:45
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Pregunta Respuesta: Lista dependiente

Cita:
Iniciado por GatorV Ver Mensaje
Creo el problema es este, tienes que evaluar el PHP a nivel de JS:
Código PHP:
Ver original
  1. $jMaQma.get("<?php echo JPATH_SITE . '/administrator/components/com_maqmahelpdesk/html/scripts/dependencia-estado.php'; ?>", { code: code }

Saludos.
Saludos GatorV;

De acuerdo a tu sugerencia el código finalmente quedaría de la siguiente manera:
Código:
function dep-edo()
	{
	alert("ENTRO");
	var code = $jMaQma("#country").val();
	$jMaQma.get("<?php echo JPATH_SITE . '/administrator/components/com_maqmahelpdesk/html/scripts/dependencia-estado.php'; ?>", { code: code }
		function(resultado)
			{
			if(resultado == false)
				{
				alert("Error al cargar los estados");
				}
			else
				{
				$("#state").attr("disabled",false);
				document.getElementById("state").options.length=1;
				$('#state').append(resultado);			
				}
			}
		);
	}
Ahora bien, haciendo debuging con el FireBug encontré que la funcion no podía llamarse dep-edo, pues el guión "-" no era aceptado, entonces cambie el nombre de la funcion, pero ahora me dice que la función resultado que esta dentro de depedo tiene el error:

Código:
SyntaxError: missing ) after argument list
Evaluando mas a fondo observo que la función depedo debería recibir un parámetro con el cual va a hacer el query y yo no se lo estoy pasando al llamarla desde el change.

Como debo pasarle el parámetro?

Desde ya muchisimas gracias....
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #13 (permalink)  
Antiguo 16/07/2013, 13:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 3 meses
Puntos: 2135
Respuesta: Lista dependiente

Pues depende de la librería, realmente desconozco cual estas usando ya que no había escuchado de jMaQma... revisa la documentación de la librería para que veas como debes de pasar el callback...
  #14 (permalink)  
Antiguo 16/07/2013, 14:49
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Pregunta Respuesta: Lista dependiente

Ahora si me perdí....

No entiendo lo de las librearías.

Fijate esta es la funcion que trabaja sin problemas fuera del componente de JOOMLA:
Código:
<script type="text/javascript">
$(document).ready(function(){
	cargar_paises();
	$("#pais").change(function(){dependencia_estado();});
	$("#estado").change(function(){dependencia_ciudad();});
	$("#estado").attr("disabled",true);
	$("#ciudad").attr("disabled",true);
});

function cargar_paises()
{
	$.get("scripts/cargar-paises.php", function(resultado){
		if(resultado == false)
		{
			alert("Error");
		}
		else
		{
			$('#pais').append(resultado);			
		}
	});	
}
function dependencia_estado()
{
	var code = $("#pais").val();
	$.get("scripts/dependencia-estado.php", { code: code },
		function(resultado)
		{
			if(resultado == false)
			{
				alert("Error");
			}
			else
			{
				$("#estado").attr("disabled",false);
				document.getElementById("estado").options.length=1;
				$('#estado').append(resultado);			
			}
		}

	);
}

function dependencia_ciudad()
{
	var code = $("#estado").val();
	$.get("scripts/dependencia-ciudades.php?", { code: code }, function(resultado){
		if(resultado == false)
		{
			alert("Error");
		}
		else
		{
			$("#ciudad").attr("disabled",false);
			document.getElementById("ciudad").options.length=1;
			$('#ciudad').append(resultado);			
		}
	});	
	
}
</script>
La pregunta es que debo hacer para ponerla a trabajar dentro de JOOMLA...

Crees que me puedas orientar al respecto?
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #15 (permalink)  
Antiguo 16/07/2013, 16:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 3 meses
Puntos: 2135
Respuesta: Lista dependiente

Pues de entrada ese código que expones es muy diferente al que pusiste antes, usas $ por lo que me imagino usas jQuery, si usas ese código tal cual (solo ajustando la ruta del PHP que trae la lista) debería de funcionar igual.

No entiendo porque dentro de Joomla usas $jMaQma ya que deberías de usar $, y si te fijas tienes errores de sintaxis en la versión de Joomla que pones.

Te muevo al foro de Javascript ya que es ahí donde tienes tu problema.
  #16 (permalink)  
Antiguo 17/07/2013, 06:58
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Pregunta Respuesta: Lista dependiente

Buen día GatorV;

Ese código corresponde a un ejemplo que conseguí googleando.

Ahora bien entiendo y analizando lo que me dices el código debería quedar de esta manera entonces:
Código:
function depedo()
	{
	var code = $jMaQma("#country").val();
	$.get("<?php echo JPATH_SITE . '/administrator/components/com_maqmahelpdesk/html/scripts/dependencia-estado.php'; ?>", { code: code }
		function(resultado)
			{
			if(resultado == false)
				{
				alert("Error al cargar los estados");
				}
			else
				{
				$("#state").attr("disabled",false);
				document.getElementById("state").options.length=1;
				$('#state').append(resultado);			
				}
			}
		);
	}
Correcto?

Podrías decirme donde está los errores de sintaxi?

Muchisimas gracias amigo y disculpa tanta molestia.
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.
  #17 (permalink)  
Antiguo 17/07/2013, 10:19
Avatar de AJDM  
Fecha de Ingreso: febrero-2013
Ubicación: Occidente
Mensajes: 69
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: Lista dependiente

Continuando con esto y no descansar hasta resolver, les cuento que ya he resuelto totalmente la incidencia, investigue bastante y logré insertar el código donde tenia que hacerlo.

Muchisimas gracias por la ayuda.....
__________________
La humildad y la disposición a compartir es lo que nos hace cada vez mejores.

Etiquetas: dependiente, formulario, lista, php, registro, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:35.