• Publicidad

Mostrar datos en un combo según selección que se hace en otr

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Mostrar datos en un combo según selección que se hace en otr

Notapor Lor » 2007-11-15 04:25 @226

¡¡¡ Muchas gracias por la buena predisposición para ayudarme !!! Les planteo mi problema:

Tengo un Form con 2 campos tipo combos, una con categorías de materiales y la otra de materiales. Yo necesito un Javascript para que cuando el usuario seleccione una categoría determinada, le aparezca en el otro combo SOLO los materiales que pertenecen a esa categoría.
Los combos se llenan con datos de una base de datos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# Categorías de material
#------------------------------------------------------------------------------
  my (%categorias_material)= ('-1' => ' Seleccione Categoría del Material');
        {
         my $ref = $dbh_m->selectall_arrayref( " SELECT id_categoria_mat, nombre" .
                                         " FROM categorias_material "  );
  foreach (@$ref) {$categorias_material{${$_}[0]} = ${$_}[1] }
        }
  my (@categorias_material) = sort { $categorias_material{$a} cmp
                           $categorias_material{$b}} keys %categorias_material;


#   Materiales
#------------------------------------------------------------------------------------------------------------------------------

my (%materiales)=  ('-1' => ' Seleccione Material');
        {
        my $ref = $dbh ->selectall_arrayref( " SELECT id_categoria_mat, id_material, nombre" .
                                        " FROM materiales ");
  foreach (@$ref) {$materiales{${$_}[0] . '-' . ${$_}[1]} = ${$_}[2] }
         }
 my (@materiales) = sort {$materiales{$a} cmp $materiales{$b}}  keys %materiales;



# EN MI FORMULARIO desplayo los siguientes CAMPOS
#------------------------------------------------------------------------------------------------------------------------------

   TR( td({-align=>"left",-colspan=>2 , -height=>'40'},
             b("Categoría: "),
              scrolling_list(-name=>"id_categoria_mat",
                             -id=>"id_categoria_mat",
                             -override=>1,
                             -default=>$id_categoria_mat,
                             -size=>1,
                             -value=>\@categorias_material,
                             -labels=>\%categorias_material,
                  -class=>'texto_form',
                             -onChange=>"llenar_materiales_segun categoria(this.value)" )       )),
                   
      TR( td({-align=>"left",-colspan=>2, -height=>'45'},
                    b("Material: " ),
          scrolling_list(-name=>'id_material',
                         -id=>'id_material',
                          -default=>$id_material,
                          -override=>1,
                          -size=>1,
                          -value=>\@materiales,
                          -class=>'texto_form',
                          -labels=>\%materiales ) )),
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¿Cómo genero la función Javascript: llenar_materiales_segun_categoria para obtener de todos los materiales que conforman el arreglo de materiales, SOLO los que tienen la categoría elegida en el otro combo?

Muchísimas gracias
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282

Publicidad

Notapor explorer » 2007-11-15 05:49 @284

Puedes hacer que se redibuje la página al recibir un evento onchange() en el primer select. Así al menos podrás mostrar los valores actualizados en los dos select.

Otra opción es usar Ajax, por ejemplo. En este foro hay algunos ejemplos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado