Página 1 de 1

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

NotaPublicado: 2007-11-15 04:25 @226
por Lor
¡¡¡ 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.004 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

NotaPublicado: 2007-11-15 05:49 @284
por explorer
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.