Como hacer esta tonteria que me trae de cabeza?

SikorZ

Vereis mi duda es simple, se que se puede hacer con AJAX pero no tengo ni idea, me he bajado una libreria llamado XAJAX que me recomendaron pero lo veo demasiado complicado ponerme a estudiarlo cuando lo que quiero hacer es bien sencillo y simple.

Tenemos un checklist en un formulario, pues bien quiero que cuando se elija X opcion de ese check list (select con options) se abra otro o ejecute un codigo en tiempo real, lo que significa que se ejecute una funcion sin tener que reiniciar la pagina o mandar datos.

Se me ocurre que se podria hacer con javascript pero no tengo ni idea (de hecho lo odio xDD)

Alguna idea sencilla? no debe ser tan dificil de hacer una cosa tan simple no? XD

LR

creo que esto te servira:

http://api.jquery.com/jQuery.post/

Yo lo he usado para los select anidados, supongo que sera igual.

SikorZ

LR siempre me respondes rapidisimo y tu ayuda es mas que eficiente pero en este caso me encuentro perdido, leo lo que me has pasado y no entiendo lo mas minimo, se que pedirte un ejemplo es dificil pero podrias ponerme la sintaxis o algo de donde tirar? porque la sintaxis de esa web no la comprendo bien

EDIT: Incluso creo que seria algo sencillo para ti que lo conoces hacerme un ejemplo de lo que necesito que es una cosa bien sencilla xDD y asi veria como funciona

Tunnecino

No se, como bien dice LR puedes usar .post o también .click

SikorZ

Ahora me he encontrado con el siguiente problema, ya he hecho eso en java ahora lo que falla es lo siguiente:
http://melkorz.byethost13.com/newstall/registeritem2.php
Una vez que entrais pulsad en Degree y elegid D11, vereis que sale:

Type of part:
Type 1

Pero mirad donde sale, yo quiero que salga dentro de la tabla... el problema creo es que el script llama a un .php donde esta el codigo ejecutable, la unica solucion es montar el codigo dentro =S?

LR

Parece que ya lo has solucionado segun veo en el link, aun asi, este es el codigo que uso yo para los select anidados, creo que ya lo he puesto por aqui alguna que otra vez

<script>
        jQuery.noConflict ()
        jQuery(document).ready(function()
        {
         jQuery ("#select1").change(function()
           {
             jQuery("#select2").find('option').remove();
             jQuery .post("url_del_.php",{ id:jQuery (this).val() },function(data){
                  jQuery ("#select2").append(data);
               })
           });              
}) </script>
SikorZ

#6 pero de ahi de donde pongo los datos? es que veras, he hecho con javascript como ves eso en la web, pero luego el value del select que meto en el form no se traspasa, aunque salga esa informacion es como si el codigo no estuviera en la web, que puedo hacer?

LR

No he visto mucho el codigo de tu web. Con lo que yo te pase, simplemente tienes que tener un archivo externo en el que metes el codigo que quieras para recuperar lo que se te carga en el segundo select.

Yo en tu caso, lo que haria seria tener una capa oculta con el 2º select creado pero sin contenido.

Añades la funcion esa que te puse antes y cuando la ejecutes, llamas a la funcion "mostrarcapa" para que te muestre el select. Se que seguramente sea un poco / bastante cutre, pero no se me ocurre otra manera mas facil de hacerlo ya que tampoco se mucho :S

Yo lo que hago es esto:

FUNCION JQUERY:

<script>
        jQuery.noConflict ()
        jQuery(document).ready(function()
        {
         jQuery ("#select1").change(function()
           {
             jQuery("#select2").find('option').remove();
             jQuery .post("url_del_.php",{ id:jQuery (this).val() },function(data){
                  jQuery ("#select2").append(data);
               })
           });              
}) </script>

INDEX.PHP

. . . . .

funcion jquery

. . . . .

. . . . .

<select id="select1">
<option value=1>Opcion  1 </option>
<option value=2>Opcion  2 </option>
<option value=3>Opcion  3 </option>
</select>

<select id="select2">
<option value="">Aqui se rellena el select2</option>
</select>

URL AL QUE LLAMA JQUERY

$id= $_REQUEST["id"];

$cnx = conectar ();
		
		$sql="SELECT ID,town FROM towns WHERE country=$id ORDER BY town ASC;";
		
		$res= mysql_query("$sql");
		
mysql_close($cnx);

$texto='<option value="">Select</option>';

if ($id!="")
{
if( mysql_num_rows($res) >0)
	{
	while (list($id,$valor) = mysql_fetch_array($res)) 
		{
			if ($valor !=$seleccionado)
				{
					$texto.= '<option value="'.$valor.'">'.$valor."</option>\n";
				}
				else 
				{
					$texto.= '<option selected value="'.$id.'">'.$valor."</option>\n";
				}
		}
	}
}
echo $texto;
return;

Es un codigo que use para el proyecto de fin de curso y no me ha dado ningun problema. Se podra depurar bastante (o eso creo) pero para lo que lo quiero funciona asi que ya se depurara mas adelante xD

SikorZ

Bfff no hay manera... alguien que me lo haga para mi y le pago 5€? xDD

Usuarios habituales

  • SikorZ
  • LR
  • Tunnecino