Jue Dic 01, 2005 2:49 am
|
 |
rafa
Perlero Nuevo

|
Registrado: 14 May 2004
Mensajes: 68
|
|
| Lista Despegable con CGI |
|
|
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 |
|
|
|

Jue Dic 01, 2005 7:55 am
|
 |
explorer39
Perlero Frecuente

|
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
|
|
|
|
|
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: |
#!/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. |
|

Vie Dic 02, 2005 7:03 am
|
 |
rafa
Perlero Nuevo

|
Registrado: 14 May 2004
Mensajes: 68
|
|
| LISTA DESPLEGABLE |
|
|
Muchas gracias por tu pronta respuesta, lo tendre en cuenta lo que me comentas.
Un Saludo. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|