• Publicidad

Lista Despegable con CGI

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Lista Despegable con CGI

Notapor rafa » 2005-12-01 03:49 @200

Hola, un saludo para todos.
Tengo un pequeño problema, es el siguiente :
Tengo esto en una página de perl...

print << "EOF";
<CENTER><TABLE CELLSPACING=0 CELLPADDING=0>
<TR><TD>
<nobr><FORM name="isn" ACTION="$ENV{'SCRIPT_NAME'}" METHOD="POST">
ESCRIBA MENSAJE: <input name=username type=hidden value="$form{'username'}">
<input name=room type=hidden value="$form{'room'}">
<input type=text name=message size=72 value="" onfocus="javascript:this.select()">
Color texto:
<select name="colores" size="1">
<option value="black">negro</option>
<option value="blue">azul</option>
<option value="red">rojo</option>
<option value="blueviolet">azulvioleta</option>
<option value="chocolate">chocolate</option>
<option value="darkgreen">verdeoscuro</option>
<option value="gray">gris</option>
<option value="fuchsia">fuchsia</option>
<option value="magenta">magenta</option>
<option value="brown">marron</option>
<option value="mediumblue">mediumblue</option>
<option value="cadetblue">azulocadete</option>
<option value="olive">verdeoliva</option>
<option value="orangered">orangerojo</option>
<option value="crimson">carmesi</option>
<option value="scarlet">escarlata</option>
<option value="#00FFFF">aguamarina</option>
</select>
<input type=submit value="Enviar">
</form></nobr>
</TD></TR>
</TABLE></CENTER><BR><HR>
<FONT SIZE=-2>Pulse Intro para refrescar la página</FONT><FONT SIZE=-1>

EOF

mi problema es el siguiente, quiero que cuando seleccione una opción de la lista desplegable y ejecute el "Enviar", no se me valla el puntero a la opción primera de la lista sino que se quede en la seleccionada.

Ejemplo si seleciono el color "red" al ejecutar el "Enviar" que se quede señalado el "red" y que no se valla a la opción "black".

Gracias a todos.
Un Saludo
rafa
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2004-05-14 05:04 @252

Publicidad

Notapor explorer39 » 2005-12-01 08:55 @413

Para hacer que el script 'recuerde' el estado entre llamadas, hay que hacer una serie de cambios:
1. Suponemos que tenemos puesto el módulo CGI.pm.
2. Obtenemos los parámetros de la llamada anterior mediante la función param.
3. Hacemos uso de la función self_url, que nos devuelve la dirección de nuestro programa junto con todos los parámetros.
4. Construímos los elementos del formulario.
Código: Seleccionar todo
#!/usr/bin/perl -w

use CGI qw/:standard/;

print header;
print start_html(-title=>'Pruebas...');
$texto = param('message');
$myself = self_url;

print << "EOF";
<CENTER><TABLE CELLSPACING=0 CELLPADDING=0>
<TR><TD>
<nobr><FORM name="isn" ACTION="$myself" METHOD="POST">
ESCRIBA MENSAJE: <input name=username type=hidden value="$form{'username'}">
<input name=room type=hidden value="$form{'room'}">
<input type=text name=message size=72 value="$texto" onfocus="javascript:this.select()">
Color texto:
EOF

my %colores = qw
(
    black       negro
    blue        azul
    red         rojo
    blueviolet  azulvioleta
    chocolate   chocolate
    darkgreen   verdeoscuro
    gray        gris
    fuchsia     fuchsia
    magenta     magenta
    brown       marron
    mediumblue  mediumblue
    cadetblue   azulocadete
    olive       verdeoliva
    orangered   orangerojo
    crimson     carmesi
    scarlet     escarlata
    #00FFFF     aguamarina
);

print popup_menu(
    'colores',
    \%colores,
);

print << "EOF";
<input type=submit value="Enviar">
</form></nobr>
</TD></TR>
</TABLE></CENTER><BR><HR>
<FONT SIZE=-2>Pulse Intro para refrescar la página</FONT><FONT SIZE=-1>
EOF
print end_html;

Nota lo siguiente:
Si pintas los elementos html directamente (con un print), entonces estás obligado a poner como valores por defecto de los elementos del formulario los valores que has recogido con param -como ves en la caja de texto editable message-. PERO:
Si pintas los elementos con las funciones que te da CGi -como el caso que ves arriba del popup_menu, NO necesitas hacer nada. CGI se encargará de colocar los valores del estado anterior por ti.
Prueba.
explorer39
 

LISTA DESPLEGABLE

Notapor rafa » 2005-12-02 08:03 @377

Muchas gracias por tu pronta respuesta, lo tendre en cuenta lo que me comentas.
Un Saludo.
rafa
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2004-05-14 05:04 @252


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados