Movatterモバイル変換


[0]ホーム

URL:


 anterior siguiente contenidos elementos atributos índice

17Formularios

Nota: Este documento es parte de una traducción al castellano de la Recomendación del W3C "HTML 4.01 Specification" (más información). Puede consultar laversión original del mismo. Para cualquier comentario o corrección acerca de la traducción póngase en contacto con el traductor en jrpozoarroba conclase punto net. Gracias por su colaboración.

Véase elAviso de copyright de la traducción.

Contenidos

  1. Introducción a los formularios
  2. Controles
    1. Tipos de controles
  3. El elementoFORM
  4. El elementoINPUT
    1. Tipos de controles creados con INPUT
    2. Ejemplos de formularios con controles INPUT
  5. El elementoBUTTON
  6. Los elementosSELECT,OPTGROUP yOPTION
    1. Opciones preseleccionadas
  7. El elementoTEXTAREA
  8. El elementoISINDEX
  9. Rótulos
    1. El elementoLABEL
  10. Añadir estructura a los formularios: los elementosFIELDSET yLEGEND
  11. Dirigir el foco hacia un elemento
    1. Navegación con tabulador
    2. Teclas de acceso
  12. Controles deshabilitados y de sólo lectura
    1. Controles deshabilitados
    2. Controles de sólo lectura
  13. Envío de formularios
    1. Método de envío del formulario
    2. Controles con éxito
    3. Procesamiento de los datos del formulario
    4. Tipos de contenido de formularios

17.1 Introducción a los formularios

Un formulario HTML es una sección de un documento que contiene contenido normal, código, elementosespeciales llamadoscontroles (casillas de verificación(checkboxes), radiobotones (radio buttons), menúes, etc.), y rótulos (labels) en esos controles. Losusuarios normalmente "completan" un formulario modificando sus controles (introduciendo texto,seleccionando objetos de un menú, etc.), antes de enviar el formulario a un agente para que lo procese(p.ej., a un servidor web, a un servidor de correo, etc.)

Aquí se muestra un ejemplo de un formulario simple que incluye rótulos, radiobotones y botones para reinicializar el formulario o para enviarlo:

 <FORM action="http://algunsitio.com/prog/usuarionuevo" method="post">    <P>    <LABEL for="nombre">Nombre: </LABEL>              <INPUT type="text"><BR>    <LABEL for="apellido">Apellido: </LABEL>              <INPUT type="text"><BR>    <LABEL for="email">email: </LABEL>              <INPUT type="text"><BR>    <INPUT type="radio" name="sexo" value="Varón"> Varón<BR>    <INPUT type="radio" name="sexo" value="Mujer"> Mujer<BR>    <INPUT type="submit" value="Enviar"> <INPUT type="reset">    </P> </FORM>

Nota. Esta especificación incluye información más detallada sobre formulariosen las subsecciones sobrerepresentación deformularios.

17.2Controles

Los usuariosinteraccionan con los formularios a través de los llamadoscontroles.

El"nombre decontrol" de un control viene dado por su atributoname. El "campo deacción" o alcance del atributoname de un control contenido en un elementoFORM es el elementoFORM.

Cada control tiene tanto un valor inicial como un valor actual, que son ambos cadenas de caracteres.Consulte la definición de cada control para obtener información sobre los valores iniciales y las posibles restricciones que puede imponer cada control sobre sus valores. En general, el"valor inicial" de un control puede especificarse con el atributovalue del elemento de control. Sin embargo, el valor inicial de un elementoTEXTAREA viene dado por sus contenidos, y el valor inicial de un elementoOBJECT de un formulario está determinado por la implementación del objeto (es decir, se sale fuera del alcance de esta especificación).

El"valoractual" del control se hace en primer lugar igual al valor inicial. A partir de esemomento, el valor actual del control puede ser modificado a través de la interacción con el usuario ymediantescripts.

El valorinicial de un control no cambia. Así, cuando se reinicializa el formulario, el valor actualde cada control se reinicializa a su valor inicial. Si el control no tiene un valor inicial, el efectode una reinicialización del formulario sobre ese control es indefinido.

Cuando se envía un formulario para su procesamiento, para algunos controles se empareja su nombrecon su valor actual, y estas parejas seenvían con el formulario. Aquelloscontroles cuyas parejas nombre/valor se envían se llamancontroles conéxito.

17.2.1Tipos de controles

HTML define los siguientes tipos de controles:

botones
Los autores pueden crear tres tipos de botones:

Los autores crean botones con el elementoBUTTON o el elementoINPUT. Consulte las definiciones de estos elementos para más detalles sobre cómo especificar diferentes tipos de botones.

Nota. Los autores deberían observar que el elementoBUTTON ofrece posibilidades más ricas de representación que el elementoINPUT.

casillas de verificación(checkboxes)
Las casillas de verificación (y los radiobotones) son interruptores de encendido/apagado que pueden ser conmutados por el usuario. Una casilla de verificación está "marcada" cuando se establece el atributochecked del elemento de control. Cuando se envía un formulario, solamente pueden teneréxito los controles de casillas de verificación que estén marcadas.

Varias casillas de verificación de un formulario pueden compartir el mismonombre de control. Así, por ejemplo, las casillas de verificación permiten a los usuarios elegir varios valores para la misma propiedad. Para crear un control de casilla de verificación se utiliza el elementoINPUT .

radiobotones (radiobuttons)
Los radiobotones son como las casillas de verificación, excepto en que cuando varios comparten el mismonombre de control, son mutuamente exclusivos: cuando uno está "encendido", todos los demás con el mismo nombre se "apagan". Para crear un control de radiobotón se usa el elementoINPUT.
Si ninguno de los radiobotones de un conjunto que comparten el mismo nombre tiene un valor inicial de "encendido", el comportamiento del agente de usuario al elegir cuál es el control que está inicialmente "encendido" queda sin definir.Nota. Debido a que las implementaciones existentes tratan este caso de formas diferentes, la especificación actual difiere de RFC 1866 ([RFC1866] sección 8.1.2.4), que dice:
En cualquier momento, exactamente uno de los radiobotones de un conjunto está marcado. Si ninguno de los elementos <INPUT> de un conjunto de radiobotones especifica 'CHECKED', entonces el agente de usuario debe marcar el primer radiobotón del conjunto inicialmente.

Al diferir los comportamientos de los agentes de usuario, los autores deberían asegurarse de que en cada conjunto de radiobotones hay uno que inicialmente está "encendido".

menúes (menus)
Los menúes ofrecen al usuario opciones entre las cuales elegir. El elementoSELECT crea un menú, en combinación con los elementosOPTGROUP yOPTION.
entrada de texto(text input)
Los autores pueden crear dos tipos de controles que permiten a los usuarios introducir textos. El elementoINPUT crea un control de entrada de una sola línea, y el elementoTEXTAREA crea una control de entrada de varias líneas. En ambos casos, el texto introducido se convierte en elvalor actual del control.
selección deficheros (file select)
Este tipo de control permite al usuario elegir ficheros de modo que sus contenidos puedan ser enviados con un formulario. Se usa el elementoINPUT para crear un control de selección de ficheros.
controles ocultos(hidden controls)
Los autores pueden crear controles que no se muestran pero cuyos valores se envían con un formulario. Los autores usan normalmente este tipo de controles para almacenar información entre intercambios cliente/servidor que de otro modo se perdería debido a la naturaleza no persistente del protocolo HTTP (ver[RFC2616]). Para crear un control oculto se usa el elementoINPUT.
controles tipo objeto (object controls)
Los autores pueden insertar objetos genéricos en los formularios de modo que los valores asociados se envíen junto con los demás controles. Los autores crean controles tipo objeto con el elementoOBJECT.

Los elementos utilizados para crear controles aparecen normalmente dentro de un elementoFORM, pero también puedenaparecer fuera de la declaración de un elementoFORM cuando se utilizan para construir interfaces de usuario. Sobre esto sehabla en la sección sobreeventos intrínsecos. Obsérvese que loscontroles que estén fuera de un formulario no pueden sercontroles conéxito.

17.3 El elementoFORM

<!ELEMENTFORM - - (%block;|SCRIPT)+ -(FORM) -- formulario interactivo --><!ATTLIST FORM%attrs;                              --%coreattrs,%i18n,%events --action%URI;          #REQUIRED -- procesador del formulario en el servidor --method      (GET|POST)     GET       -- método HTTP usado para enviar formulario --enctype%ContentType;  "application/x-www-form-urlencoded"accept%ContentTypes; #IMPLIED  -- lista de tipos MIME para subir ficheros --nameCDATA          #IMPLIED  -- nombre del formulario para los scripts --onsubmit%Script;       #IMPLIED  -- el formulario fue enviado --onreset%Script;       #IMPLIED  -- el formulario fue reinicializado --accept-charset%Charsets;  #IMPLIED  -- lista de codif. de caracteres soportadas --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos

action =uri[CT]
Este atributo especifica un agente procesador de formularios. El comportamiento del agente de usuario frente a un valor diferente de un URI HTTP es indefinido.
method =get|post[CI]
Este atributo especifica qué método HTTP se usará para enviar elconjunto de datos del formulario. Los valores posibles (que no distinguen entre mayúsculas y minúsculas) son "get" (valor por defecto) y "post". Véase la sección sobreenvío de formularios para información sobre su uso.
enctype =tipo de contenido[CI]
Este atributo especifica eltipo de contenido usado para enviar el formulario al servidor (cuando el valor del atributomethod sea "post"). El valor por defecto de este atributo es"application/x-www-form-urlencoded". El valor"multipart/form-data" debería usarse en combinación con el elementoINPUT,type="file".
accept-charset =lista de codificaciones de caracteres[CI]
Este atributo especifica la lista decodificaciones de caracteres para los datos introducidos que son aceptadas por el servidor que procesa este formulario. El valor es una lista de valores decodificaciones de caracteres separadas por espacios y/o comas. El cliente debe interpretar esta lista como una lista o-exclusiva, es decir, el servidor es capaz de aceptar cualquier codificación de caracteres individual por entidad recibida.

El valor por defecto de este atributo es la cadena reservada "UNKNOWN" ("desconocido"). Los agentes de usuario pueden interpretar este valor como la codificación de caracteres que fue usada para transmitir el documento que contiene este elementoFORM.

accept =lista de tipos de contenido[CI]
Este atributo especifica una lista de tipos de contenido separados por comas que un servidor procesador de formularios manejará correctamente. Los agentes de usuario pueden utilizar esta información para filtrar ficheros no conformes cuando pidan al usuario seleccionar ficheros para enviar al servidor (véase el elementoINPUT cuandotype="file").
name =cdata[CI]
Este atributo da nombre al elemento de modo que se pueda hacer referencia a él desde hojas de estilo o scripts.Nota. Este atributo ha sido incluido por motivos de compatibilidad con versiones anteriores. Las aplicaciones deberían usar el atributoid para identificar elementos.

Atributos definidos en otros lugares

El elementoFORM actúacomo contenedor decontroles. Especifica:

Un formulario puede contener texto y código (párrafos, listas, etc.) además decontroles de formulario.

El siguiente ejemplo muestra un formulario que va a ser procesado por el programa "usuarionuevo"cuando sea enviado. El formulario será enviado al programa usando el método HTTP "post".

 <FORM action="http://algunsitio.com/prog/usuarionuevo" method="post">...contenidos del formulario... </FORM>

Consulte la sección sobreenvío de formularios para información sobrecómo deben preparar los agentes de usuario los datos del formulario para los servidores y cómo deberíantratar los agentes de usuario las respuestas esperadas.

Nota. Quedan fuera del alcance de esta especificación las cuestiones sobre elcomportamiento de los servidores que reciben datos de formularios.

17.4 El elementoINPUT

<!ENTITY % InputType  "(TEXT | PASSWORD | CHECKBOX |    RADIO | SUBMIT | RESET |    FILE | HIDDEN | IMAGE | BUTTON)"   ><!-- se requiere el atributo name para todos excepto para submit y reset --><!ELEMENTINPUT - O EMPTY              -- control de formulario --><!ATTLIST INPUT%attrs;                              --%coreattrs,%i18n,%events --type%InputType;    TEXT      -- qué tipo de control se necesita --nameCDATA          #IMPLIED  -- enviar como parte del formulario --valueCDATA          #IMPLIED  -- especificar para radiobotones                                          y casillas de verificación --checked     (checked)      #IMPLIED  -- para radiobotones y casillas de verif. --disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --readonly    (readonly)     #IMPLIED  -- para texto y contraseñas --sizeCDATA          #IMPLIED  -- específico de cada tipo de campo --maxlengthNUMBER         #IMPLIED  -- máximo de caracteres para campos de texto --src%URI;          #IMPLIED  -- para campos con imágenes --altCDATA          #IMPLIED  -- descripción corta --usemap%URI;          #IMPLIED  -- usar mapa de imágenes en el cliente --ismap       (ismap)        #IMPLIED  -- usar mapa de imágenes en el servidor --tabindexNUMBER         #IMPLIED  -- posición en el orden de tabulación --accesskey%Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --onfocus%Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --onblur%Script;       #IMPLIED  -- el elemento perdió el foco --onselect%Script;       #IMPLIED  -- se seleccionó parte del texto --onchange%Script;       #IMPLIED  -- el valor del elemento fue modificado --accept%ContentTypes; #IMPLIED  -- lista de tipos MIME para subir ficheros --  >

Etiqueta inicial:obligatoria, Etiqueta final:prohibida

Definiciones de atributos

type =text|password|checkbox|radio|submit|reset|file|hidden|image|button[CI]
Este atributo especifica eltipo de control a crear. El valor por defecto para este atributo es "text".
name =cdata[CI]
Este atributo asigna elnombre de control.
value =cdata[CA]
Este atributo especifica elvalor inicial delcontrol. Es opcional excepto cuando el atributotype tenga el valor "radio" o "checkbox".
size =cdata[CN]
Este atributo le dice al agente de usuario la anchura inicial del control. Laanchura viene dada enpíxeles excepto cuando el atributotype tenga el valor "text" o "password". En estos casos, el valorse refiere al número (entero) de caracteres.
maxlength =number[CN]
Cuando el atributotype tiene el valor "text" o "password",este atributo especifica el número máximo de caracteres que puede introducir el usuario.Este número puede exceder del especificado porsize, en cuyo caso el agentede usuario debería ofrecer un mecanismo de desplazamiento. El valor por defecto paraeste atributo es un número ilimitado.
checked[CI]
Cuando el atributotype tiene el valor "radio" o "checkbox",este atributo booleano especifica que el botón está marcado ("on"). Los agentes de usuario nodeben tener en cuenta este atributo para otros tipos de control.
src =uri[CT]
Cuando el atributotype tiene el valor "image", este atributo especificala localización de la imagen que debe usarse para decorar el botón gráfico de envío.

Atributos definidos en otros lugares

17.4.1Tipos de controlescreados con INPUT

Eltipo de control definido por el elementoINPUTdepende del valor del atributotype:

text
Crea un controldeentrada de texto de una línea.
password
Igual que "text", pero el texto introducidose presentan de tal modo que se oculten los caracteres (p.ej., mediante un serie de asteriscos).Este tipo de control suele utilizarse para datos importantes tales como contraseñas.Obsérvese que elvalor actual es el textointroducido por el usuario, no el texto representado por el agente de usuario.

Nota. Los diseñadores de aplicacionesdeberían tener en cuenta que este mecanismo ofrece en realidad un nivel muy bajo de seguridad.Aunque la contraseña se oculte a las personas que puedan estar mirando, se transmiteal servidor como texto sin enmascarar, y puede ser leído por cualquiera que tengaacceso de bajo nivel a la red.

checkbox
Crea unacasilla de verificación o "checkbox".
radio
Crea unradiobotón o "radio button".
submit
Crea unbotón de envío o "submit button".
image
Crea unbotón de envío gráfico. El valordel atributosrc especifica el URI de la imagen que decorará el botón.Por razones de accesibilidad, los autores deberían proporcionar untexto alternativo para la imagenpor medio del atributoalt.

Cuando se utiliza un dispositivo apuntador para hacer clic sobrela imagen, se envían al servidor el formulario y la coordenadas en que sepulsó el dispositivo. El valor x se mide enpíxeles desde la izquierda de la imagen, y el valor y enpíxeles desde la parte superior de la imagen.Los datos enviados incluyenname.x=x-value yname.y=y-value donde"name" es el valor del atributoname, yx-value ey-valueson las coordenadas x e y, respectivamente.

Si el servidor realiza acciones diferentes dependiendo del lugar en que sepulsó el dispositivo, los usuarios de navegadores no gráficos estarán en desventaja.Por esta razón, los autores deberían considerar otras alternativas:

reset
Crea unbotón de reinicialización o "reset button".
button
Crea unbotón pulsador o "push button". Los agentes de usuario deberíanusar el valor del atributovalue como rótulo del botón.
hidden
Crea uncontrol oculto o "hidden control".
file
Crea un control deselección de fichero o "file select". Los agentes deusuario pueden usar el valor del atributovalue para el nombre de fichero inicial.

17.4.2 Ejemplos de formularios con controles INPUT

El siguiente fragmento HTML de ejemplo define un formulario simple que permite al usuariointroducir su nombre, apellido, dirección de correo electrónico y sexo. Cuando se activeel botón de envío, el formulario será enviado al programa especificado por elatributoaction.

 <FORM action="http://algunsitio.com/prog/usuarionuevo" method="post">    <P>    Nombre: <INPUT type="text" name="nombre"><BR>    Apellido: <INPUT type="text" name="apellido"><BR>    email: <INPUT type="text" name="email"><BR>    <INPUT type="radio" name="sexo" value="Varón"> Varón<BR>    <INPUT type="radio" name="sexo" value="Mujer"> Mujer<BR>    <INPUT type="submit" value="Enviar"> <INPUT type="reset">    </P> </FORM>

Este formulario podría ser representado de la siguiente manera:

Ejemplo de representación de un formulario.

En la sección sobre el elementoLABEL, se habla sobre la codificación de rótulos tales como "Nombre".

En el ejemplo que sigue, se ejecuta la función Javascript llamadaverificar cuandose da el evento "onclick":

<HEAD><META http-equiv="Content-Script-Type" content="text/javascript"></HEAD><BODY> <FORM action="..." method="post">    <P>    <INPUT type="button" value="Pínchame"> </FORM></BODY>

Consulte la sección sobreeventos intrínsecospara más información sobre scripts y eventos.

El siguiente ejemplo muestra cómo pueden enviarse los contenidos de un ficheroespecificado por el usuario con un formulario. Se le pide al usuario su nombrey una lista de nombres de ficheros cuyos contenidos deberían enviarse con elformulario. Al especificar paraenctype el valor "multipart/form-data", los contenidosde cada fichero se empaquetarán para su envío en una sección separada de un documentomultiparte.

<FORM action="http://servidor.com/cgi/procesar"    enctype="multipart/form-data"    method="post"> <P> ¿Cómo se llama usted? <INPUT type="text" name="nombre_del_remitente"> ¿Qué ficheros desea enviar? <INPUT type="file" name="nombre_de_los_ficheros"> </P></FORM>

17.5 El elementoBUTTON

<!ELEMENTBUTTON - -     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)     -- botón pulsador --><!ATTLIST BUTTON%attrs;                              --%coreattrs,%i18n,%events --nameCDATA          #IMPLIEDvalueCDATA          #IMPLIED  -- se envía al servidor junto al formulario --type        (button|submit|reset) submit -- para usar como botón de formulario --disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --tabindexNUMBER         #IMPLIED  -- posición en el orden de tabulación --accesskey%Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --onfocus%Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --onblur%Script;       #IMPLIED  -- el elemento perdió el foco --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos

name =cdata[CI]
Este atributo asigna elnombre de control.
value =cdata[CS]
Este atributo asigna al botón suvalor inicial.
type =submit|button|reset[CI]
Este atributo declara el tipo del botón. Valores posibles:

Atributos definidos en otros lugares

Los botones creados con el elementoBUTTON funcionan exactamente igual que los botonescreados con el elementoINPUT, pero ofrecen posibilidades más ricas de representación:el elementoBUTTON puede tener contenido. Por ejemplo, un elementoBUTTONque contenga una imagen se parece y funciona como un elementoINPUTcuyo atributotype sea igual a "image", pero el tipo de elementoBUTTONpermite un contenido.

Los agentes de usuario visuales pueden representar los botonesBUTTONcon un relieve y un movimiento arriba/abajo al pulsarlos, mientras que puedenrepresentar los botonesINPUT como imágenes "planas".

El siguiente ejemplo extiende un ejemplo previo, pero creando los botones deenvío y dereinicialización conBUTTON en lugar de conINPUT. Los botones contienen imágenes sacadas de elementosIMG.

 <FORM action="http://algunsitio.com/prog/usuarionuevo" method="post">    <P>    Nombre: <INPUT type="text" name="nombre"><BR>    Apellido: <INPUT type="text" name="apellido"><BR>    email: <INPUT type="text" name="email"><BR>    <INPUT type="radio" name="sexo" value="Varón"> Varón<BR>    <INPUT type="radio" name="sexo" value="Mujer"> Mujer<BR>    <BUTTON name="enviar" value="enviar" type="submit">    Enviar<IMG src="/iconos/ahivaeso.gif" alt="¡Ahí va eso!"></BUTTON>    <BUTTON name="reiniciar" type="reset">    Reinicializar<IMG src="/iconos/ayno.gif" alt="¡Ay, no!"></BUTTON>    </P> </FORM>

Recuérdese que los autores deben proporcionartexto alternativo para los elementosIMG.

Es ilegal asociarun mapa de imágenes con unIMG que aparezca como el contenido de un elementoBUTTON.

EJEMPLO ILEGAL:
Lo siguiente no es HTML legal.

<BUTTON><IMG src="blabla.gif" usemap="..."></BUTTON>

17.6 Los elementosSELECT,OPTGROUP yOPTION

<!ELEMENTSELECT - - (OPTGROUP|OPTION)+ -- selector de opciones --><!ATTLIST SELECT%attrs;                              --%coreattrs,%i18n,%events --nameCDATA          #IMPLIED  -- nombre del campo --sizeNUMBER         #IMPLIED  -- filas visibles --multiple    (multiple)     #IMPLIED  -- por defecto es selección simple --disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --tabindexNUMBER         #IMPLIED  -- posición en el orden de tabulación --onfocus%Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --onblur%Script;       #IMPLIED  -- el elemento perdió el foco --onchange%Script;       #IMPLIED  -- el valor del elemento fue modificado --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos de SELECT

name =cdata[CI]
Este atributo asigna elnombre de control.
size =número[CN]
Si un elementoSELECT se presenta como una lista con desplazamiento ("scrolled list box"),este atributo especifica el número de filas de la lista que deberían ser visibles almismo tiempo. No es preciso que los agentes visuales presenten un elementoSELECTcomo una lista ("list box"); pueden usar cualquier otro mecanismo, como por ejemplo unmenú desplegable ("drop-down menu").
multiple[CI]
Si está activado, este atributo booleano permite selecciones múltiples. Si noestá activado, el elementoSELECT sólo permite selecciones simples.

Atributos definidos en otros lugares

El elementoSELECT crea unmenú. Cada opción ofrecidapor el menú se representa por un elementoOPTION. Un elementoSELECTdebe contener al menos un elementoOPTION.

El elementoOPTGROUP permite a los autores agrupar opcioneslógicamente. Esto es particularmente útil cuando el usuario debe elegir de entreuna larga lista de opciones; es más fácil apreciar y recordar grupos de opcionesrelacionadas que una larga lista de opciones sueltas. En HTML 4, todos los elementosOPTGROUP deben especificarse directamente dentro de un elementoSELECT(es decir, no pueden anidarse unos grupos dentro de otros).

17.6.1Opciones preseleccionadas

Pueden preseleccionarse para el usuario cero o más opciones. Los agentes de usuario deberíandeterminar qué opciones son preseleccionadas de acuerdo con lo siguiente:

<!ELEMENTOPTGROUP - - (OPTION)+ -- grupo de opciones --><!ATTLIST OPTGROUP%attrs;                              --%coreattrs,%i18n,%events --disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --label%Text;         #REQUIRED -- para usar en menúes jerárquicos --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos de OPTGROUP

label =texto[CS]
Este atributo especifica el rótulo del grupo de opciones.

Atributos definidos en otros lugares

Nota. Se avisa a los implementadores de que las versiones futuras deHTML pueden extender el mecanismo de agrupamiento para permitir grupos anidados (es decir,para que los elementosOPTGROUP puedan anidarse). Esto permitirá a los autores representar una jerarquíade opciones más rica.

<!ELEMENTOPTION - O (#PCDATA)         -- opción seleccionable --><!ATTLIST OPTION%attrs;                              --%coreattrs,%i18n,%events --selected    (selected)     #IMPLIED  -- opción preseleccionada --disabled    (disabled)     #IMPLIED  -- no disponible en este contexto --label%Text;         #IMPLIED  -- para usar en menúes jerárquicos --valueCDATA          #IMPLIED  -- por defecto es el contenido del elemento --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos de OPTION

selected[CI]
Si está establecido, este atributo booleano especifica que esta opciónestá preseleccionada.
value =cdata[CS]
Este atributo especifica elvalor inicial delcontrol. Si este atributo no está establecido, elvalorinicial es igual a los contenidos del elementoOPTION.
label =texto[CS]
Este atributo permite a los autores especificar un rótulo para la opción máscorto que el contenido del elementoOPTION. Cuando esté especificado, los agentes de usuario deberían usarcomo rótulo de la opción el valor de este atributo en lugar del contenido del elementoOPTION.

Atributos definidos en otros lugares

Cuando se represente una opción de un menú, los agentesde usuario deberían usar como opción el valor del atributolabel del elementoOPTION.Si este atributo no está especificado, los agentes de usuario deberían usar loscontenidos del elementoOPTION.

El atributolabel del elementoOPTGROUP especifica el rótulo de un grupo de opciones.

En este ejemplo, creamos un menú que permite al usuario seleccionar cuálde los siete componentes de un programa instalar. Los dos primeros componentesestán preseleccionados pero pueden ser deseleccionados por el usuario. El restode los componentes no están preseleccionados. El atributosize dice que el menú sólodebería tener cuatro filas, aunque el usuario pueda elegir ente siete opciones.Las otras opciones deberían estar disponibles a través de un mecanismo de desplazamiento.

El elementoSELECT va seguido de botones de envío y de reinicialización.

<FORM action="http://algunsitio.com/prog/elegir-componente" method="post">   <P>   <SELECT multiple size="4" name="elegir-componente">      <OPTION selected value="Componente_1_a">Componente_1</OPTION>      <OPTION selected value="Componente_1_b">Componente_2</OPTION>      <OPTION>Componente_3</OPTION>      <OPTION>Componente_4</OPTION>      <OPTION>Componente_5</OPTION>      <OPTION>Componente_6</OPTION>      <OPTION>Componente_7</OPTION>   </SELECT>   <INPUT type="submit" value="Enviar"><INPUT type="reset">   </P></FORM>

Solamente las opciones seleccionadastendrán éxito(usando elnombre de control "elegir-componente"). Cuandono haya opciones seleccionadas, el control no tendrá éxito, y ni el nombre ni ningunode los valores se enviarán al servidor cuando se envíe el formulario. Obsérvese queel atributovalue, cuando está establecido, determina elvalor inicial del control, que de otro modo es el contenidodel elemento.

En este ejemplo usamos el elementoOPTGROUP para agrupar opciones. El siguiente código:

<FORM action="http://algunsitio.com/prog/algunprograma" method="post"> <P> <SELECT name="ComOS">     <OPTION selected label="ninguno" value="ninguno">Ninguno</OPTION>     <OPTGROUP label="PortMaster 3">       <OPTION label="3.7.1" value="pm3_3.7.1">PortMaster 3 con ComOS 3.7.1</OPTION>       <OPTION label="3.7" value="pm3_3.7">PortMaster 3 con ComOS 3.7</OPTION>       <OPTION label="3.5" value="pm3_3.5">PortMaster 3 con ComOS 3.5</OPTION>     </OPTGROUP>     <OPTGROUP label="PortMaster 2">       <OPTION label="3.7" value="pm2_3.7">PortMaster 2 con ComOS 3.7</OPTION>       <OPTION label="3.5" value="pm2_3.5">PortMaster 2 con ComOS 3.5</OPTION>     </OPTGROUP>     <OPTGROUP label="IRX">       <OPTION label="3.7R" value="IRX_3.7R">IRX con ComOS 3.7R</OPTION>       <OPTION label="3.5R" value="IRX_3.5R">IRX con ComOS 3.5R</OPTION>     </OPTGROUP> </SELECT></FORM>

representa el siguiente agrupamiento:

  Ninguno  PortMaster 3      3.7.1      3.7      3.5  PortMaster 2      3.7      3.5  IRX      3.7R      3.5R

Los agentes de usuario visuales pueden permitir a losusuarios seleccionar de entre grupos de opciones a través de un menú jerárquico ode algún otro mecanismo que refleje la estructura de las opciones.

Un agente de usuario gráfico podría representarlo así:

Una posible representación de OPTGROUP

Esta imagen muestra un elementoSELECT representado mediante menúes en cascada. El rótulo superiordel menú muestra el valor seleccionado actualmente (PortMaster 3, 3.7.1).El usuario ha desplegado dos menúes en cascada, pero aún no ha seleccionado el nuevo valor(PortMaster 2, 3.7). Obsérvese que cada menú en cascada muestra el rótulo de un elementoOPTGROUP uOPTION.

17.7 El elementoTEXTAREA

<!ELEMENTTEXTAREA - - (#PCDATA)       -- campo de texto multilínea --><!ATTLIST TEXTAREA%attrs;                              --%coreattrs,%i18n,%events --nameCDATA          #IMPLIEDrowsNUMBER         #REQUIREDcolsNUMBER         #REQUIREDdisabled    (disabled)     #IMPLIED  -- no disponible en este contexto --readonly    (readonly)     #IMPLIEDtabindexNUMBER         #IMPLIED  -- posición en el orden de tabulación --accesskey%Character;    #IMPLIED  -- carácter de la tecla de accessibilidad --onfocus%Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --onblur%Script;       #IMPLIED  -- el elemento perdió el foco --onselect%Script;       #IMPLIED  -- se seleccionó parte del texto --onchange%Script;       #IMPLIED  -- el valor del elemento fue modificado --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos

name =cdata[CI]
Este atributo asigna elnombre de control.
rows =número[CN]
Este atributo especifica el número de líneas de texto visibles. Los usuariosdeberían poder introducir un número mayor de líneas, por lo que los agentes de usuario deberíanproporcionar medios para desplazar los contenidos del control cuandolos contenidos se extiendan más allá del área visible.
cols =número[CN]
Este atributo especifica la anchura visible en caracteres de anchura media.Los usuarios deberían poder introducir líneas de mayor longitud, por lo quelos agentes de usuario deberían proporcionar medios para desplazar loscontenidos del control cuando los contenidos se extiendan más allá del áreavisible. Los agentes del usuario pueden partir las líneas de texto visiblepara que las líneas largas puedan verse sin necesidad de desplazarlas.

Atributos definidos en otros lugares

El elementoTEXTAREA crea un control deentrada de textomultilínea. Los agentes de usuario deberían usar los contenidos de este elementocomovalor inicial del control y representar este textoinicialmente.

Este ejemplo crea un controlTEXTAREA de 20 filas por 80 columnasque contiene inicialmente dos líneas de texto. El elementoTEXTAREA va seguido de botones de envío y reinicialización.

<FORM action="http://algunsitio.com/prog/leer-texto" method="post">   <P>   <TEXTAREA name="eltexto" rows="20" cols="80">   Primera línea del texto inicial.   Segunda línea del texto inicial.   </TEXTAREA>   <INPUT type="submit" value="Enviar"><INPUT type="reset">   </P></FORM>

Estableciendo el atributoreadonly los autores pueden mostrar texto no modificableen un elementoTEXTAREA. Esto no es lo mismo que usar código de texto estándar, ya queel valor delTEXTAREAse envía con el formulario.

17.8 El elementoISINDEX

ISINDEX estádesaprobado. Este elemento crea un control deentrada de texto de una línea. Los autores debería usar el elementoINPUTpara crear controles deentrada de texto.

Véase elDTD Transicional para la definiciónformal.

Definiciones de atributos

prompt =texto[CS]
Desaprobado. Esteatributo especifica una cadena indicadora ("prompt") para el campo de entrada.

Atributos definidos en otros lugares

El elementoISINDEX crea un control deentradade texto de una línea que permite cualquier número de caracteres. Los agentes de usuariopueden usar el valor del atributoprompt como cadena indicadora ("prompt").

EJEMPLO DESAPROBADO:
La siguiente declaraciónISINDEX:

<ISINDEX prompt="Escriba la frase a buscar: ">

podría reescribirse conINPUT del siguiente modo:

<FORM action="..." method="post"><P>Entre la frase a buscar: <INPUT type="text"></P></FORM>

Semántica deISINDEX.Actualmente, la semántica deISINDEX sólo está bien definida cuando el URI basedel documento que lo contiene es un URI HTTP. En la práctica, la cadena introducidaestá restringida a Latin-1 ya que no hay ningún mecanismo con el que el URI puedaespecificar un juego de caracteres diferente.

17.9Rótulos

A algunos controles de formulario se les asocian rótulos automáticamente (botones pulsadores)aunque a la mayoría no (campos de texto, casillas de verificación y radiobotones, ymenúes).

Para aquellos controles que tengan rótulos implícitos, los agentes de usuario deberíanutilizar el valor del atributovalue como texto del rótulo.

El elementoLABEL se utiliza para especificar rótulos de controles que no tienen rótulosimplícitos.

17.9.1 El elementoLABEL

<!ELEMENTLABEL - - (%inline;)* -(LABEL) -- texto del rótulo de un                                            campo de formulario --><!ATTLIST LABEL%attrs;                              --%coreattrs,%i18n,%events --forIDREF          #IMPLIED  -- concuerda con el valor ID del campo --accesskey%Character;    #IMPLIED  -- carácter de tecla de accesibilidad --onfocus%Script;       #IMPLIED  -- el foco se dirigió hacia el elemento --onblur%Script;       #IMPLIED  -- el elemento perdió el foco --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos

for =idref[CS]
Este atributo asocia explícitamente el rótulo definido con otro control.Cuando está presente, el valor de este atributo debe ser el mismo que el valordel atributoid de algún otro control del mismo documento.Cuando no está presente, el rótulo definido se asocia con los contenidosdel elemento.

Atributos definidos en otros lugares

El elementoLABEL puede utilizarse para adjuntar información a los controles.Cada elementoLABEL se asocia exactamente con un control de formulario.

El atributofor asocia explícitamente un rótulo con otro control:el valor del atributofor debe ser el mismo que el valor del atributoid del elemento de control asociado. Se puede asociar más de unLABEL con el mismo control creando múltiples referencias a travésdel atributofor.

Este ejemplo crea una tabla que se utiliza para alinear dos controles deentrada de texto y sus rótulos asociados. Cada rótuloestá explícitamente asociado a un control deentrada de texto:

<FORM action="..." method="post"><TABLE>  <TR>    <TD><LABEL for="nombre">Nombre</LABEL>    <TD><INPUT type="text" name="nombre">  <TR>    <TD><LABEL for="apellido">Apellido</LABEL>    <TD><INPUT type="text" name="apellido"></TABLE></FORM>

Este ejemplo extiende el formulario de un ejemplo previo haciendo que incluyaelementosLABEL.

 <FORM action="http://algunsitio.com/prog/usuarionuevo" method="post">    <P>    <LABEL for="nombre">Nombre: </LABEL>              <INPUT type="text"><BR>    <LABEL for="apellido">Last name: </LABEL>              <INPUT type="text"><BR>    <LABEL for="email">email: </LABEL>              <INPUT type="text"><BR>    <INPUT type="radio" name="sexo" value="Varón"> Varón<BR>    <INPUT type="radio" name="sexo" value="Mujer"> Mujer<BR>    <INPUT type="submit" value="Enviar"> <INPUT type="reset">    </P> </FORM>

Para asociar implícitamente un rótulo con otro control,el elemento de control debe estar dentro de los contenidos del elementoLABEL.En este caso, elLABEL sólo puede contener un elemento de control. El rótuloen sí puede colocarse antes o después del control asociado.

En este ejemplo, asociamos implícitamente dos rótulos a dos controles deentrada de texto:

<FORM action="..." method="post"><P><LABEL>   Nombre   <INPUT type="text" name="nombre"></LABEL><LABEL>   <INPUT type="text" name="apellido">   Apellido</LABEL></P></FORM>

Obsérvese que esta técnica no puede utilizarse cuando se usa una tablapara fijar la disposición de los elementos, con el rótulo en una celda ysu control asociado en otra celda.

Cuando elfoco se dirige hacia un elementoLABEL, éste pasa el foco a su control asociado. Véanse más adelante en la sección sobreteclas de acceso algunos ejemplos.

Los rótulos pueden ser representados por los agentes de usuario de diferentes maneras(p.ej., visualmente, leídos por sintetizadores de voz, etc.)

17.10Añadir estructura a losformularios: los elementosFIELDSETyLEGEND

<!--  #PCDATA es para resolver el problema del contenido mixto,  de acuerdo con la especificación aquí sólo se permite espacio en blanco!--><!ELEMENTFIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- grupo de controles                                                     de formulario --><!ATTLIST FIELDSET%attrs;                              --%coreattrs,%i18n,%events --  ><!ELEMENTLEGEND - - (%inline;)*       -- leyenda del grupo de campos --><!ATTLIST LEGEND%attrs;                              --%coreattrs,%i18n,%events --accesskey%Character;    #IMPLIED  -- carácter de la tecla de accesibilidad --  >

Etiqueta inicial:obligatoria, Etiqueta final:obligatoria

Definiciones de atributos de LEGEND

align =top|bottom|left|right[CI]
Desaprobado. Esteatributo especifica la posición de la leyenda con respecto al grupo de campos (fieldset).Valores posibles:
  • top: La leyenda está en la parte superior del grupo de campos. Este es elvalor por defecto.
  • bottom: La leyenda está en la parte inferior del grupo de campos.
  • left: La leyenda está a la izquierda del grupo de campos.
  • right: La leyenda está a la derecha del grupo de campos.

Atributos definidos en otros lugares

El elementoFIELDSET (grupo de campos) permite a los autores agrupartemáticamente controles y rótulos relacionados. Gracias al agrupamiento de controleses más fácil para los usuarios entender su propósito y al mismo tiempo se facilitala navegación con agentes de usuario visuales y la navegación por voz para agentesde usuario basados en voz. El uso correcto de este elemento hace los documentos másaccesibles.

El elementoLEGEND permite a los autores asignar un título a unFIELDSET. La leyenda mejora la accesibilidad cuando elFIELDSET no se representa visualmente.

En este ejemplo, creamos un formulario que podría rellenarse en una consultamédica. Se divide en tres secciones: información personal, historial médico,y medicación actual. Cada sección contiene controles para introducir lainformación apropiada.

<FORM action="..." method="post"> <P> <FIELDSET>  <LEGEND>Información Personal</LEGEND>  Apellido: <INPUT name="personal_apellido" type="text" tabindex="1">  Nombre: <INPUT name="personal_nombre" type="text" tabindex="2">  Dirección: <INPUT name="personal_dirección" type="text" tabindex="3">...más información personal... </FIELDSET> <FIELDSET>  <LEGEND>Historial Médico</LEGEND>  <INPUT name="historial_enfermedades"          type="checkbox"          value="Viruela" tabindex="20"> Viruela  <INPUT name="historial_enfermedades"          type="checkbox"          value="Paperas" tabindex="21"> Paperas  <INPUT name="historial_enfermedades"          type="checkbox"          value="Mareos" tabindex="22"> Mareos  <INPUT name="historial_enfermedades"          type="checkbox"          value="Resfriado" tabindex="23"> Resfriado...más historial médico... </FIELDSET> <FIELDSET>  <LEGEND>Medicación Actual</LEGEND>  ¿Está tomando actualmente algún tipo de medicación?   <INPUT name="medicacion_ahora"          type="radio"          value="Sí" tabindex="35">Sí  <INPUT name="medicacion_ahora"          type="radio"          value="No" tabindex="35">No  Si está tomando actualmente algún tipo de medicación, indíquela  en el espacio proporcionado a continuación:  <TEXTAREA name="medicacion_actual"             rows="20" cols="50"            tabindex="40">  </TEXTAREA> </FIELDSET></FORM>

Obsérvese que en este ejemplo podríamos mejorar la presentación visual delformulario alineando los elementos dentro de cadaFIELDSET (con hojas de estilo), añadiendoinformación de fuentes y colores (con hojas de estilo), añadiendo scripts (por ejemplo,para abrir el área de texto de "medicación actual" sólo si el usuario indica que actualmenteestá tomando medicación), etc.

17.11Dirigir el foco hacia un elemento

En un documento HTML, el usuario debe dirigir elfoco hacia un elemento para queéste se active y realice sus funciones. Por ejemplo, los usuarios deben activar un vínculoespecificado con el elementoA para seguir el vínculo específicado.Análogamente, los usuarios deben dirigir el foco hacia unTEXTAREA para poder introducir textoen su interior.

Hay varias maneras de dirigir el foco hacia un elemento:

17.11.1Navegación con tabulador

Definiciones de atributos

tabindex =número[CN]
Este atributo especifica la posición del elemento actual dentro delorden de tabulación del documento actual. Este valor debe ser un número entre 0y 32767. Los agentes de usuario no deberían tener en cuenta los ceros a la izquierda.

Elorden de tabulacióndefine el orden en que el foco se dirige hacia los elementos cuando se navegapor medio del teclado. El orden de tabulación puede incluir elementos anidadosen otros elementos.

Los agentes de usuario deberían navegar por los elementos a los que puededirigirse el foco de acuerdo con las siguientes reglas:

  1. Navegar en primer lugar por aquellos elementos que soporten el atributotabindexy tengan asignado para éste un valor positivo. La navegación se produce desde elelemento con menor valor detabindex hasta el elemento con el valor más alto. Los valoresno necesitan ser secuenciales ni deben comenzar por un valor en particular. Si hayelementos que tengan valores idénticos detabindex debería navegarse por ellos según el orden en queaparezcan en el flujo de caracteres.
  2. A continuación se navega por aquellos elementos que no soporten el atributotabindexo por los que soportándolo tengan asignado para él un valor "0". Se navega por estoselementos según el orden en que aparezcan en el flujo de caracteres.
  3. Los elementos que esténdeshabilitados no participan en elorden de tabulación.

Los siguientes elementos soportan el atributotabindex:A,AREA,BUTTON,INPUT,OBJECT,SELECTyTEXTAREA.

En este ejemplo, el orden de tabulación será elBUTTON,los elementosINPUT en orden (obsérvese que "campo1" y el botón comparten el mismotabindex, pero "campo1" aparece después en el flujo de caracteres), y por últimoel vínculo creado por el elementoA.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"   "http://www.w3.org/TR/html4/strict.dtd"><HTML><HEAD><TITLE>Un documento con FORM</TITLE></HEAD><BODY>...texto...<P>Ir al <A tabindex="10" href="http://www.w3.org/">sitio web del W3C.</A>...más texto...<BUTTON type="button" name="obtener-base-de-datos"           tabindex="1">Obtener la base de datos acutal.</BUTTON>...más texto...<FORM action="..." method="post"><P><INPUT tabindex="1" type="text" name="campo1"><INPUT tabindex="2" type="text" name="campo2"><INPUT tabindex="3" type="submit" name="enviar"></P></FORM></BODY></HTML>

Teclas de tabulación. La secuencia real de teclas que permitenla navegación con tabulador o la activación de los elementos depende de la configuracióndel agente de usuario (p.ej., la tecla "tab" se usa para la navegación y la tecla "intro"se usa para activar el elemento seleccionado).

Los agentes de usuario pueden también definir secuencias de teclas para navegaren orden inverso al de tabulación. Cuando se alcanza el final (o el principio) del ordende tabulación, los agentes de usuario puede volver al principio (o al final).

17.11.2Teclas de acceso

Definiciones de atributos

accesskey =carácter[CN]
Este atributo asigna una tecla de acceso a un elemento.Una teclade acceso es un carácter único del conjunto de caracteres del documento.Nota. Los autores deberían considerar la forma que tienen losusuarios potenciales de interaccionar a la hora de especificar la tecla de acceso.

Al pulsar la tecla de acceso asignada a un elemento, el foco se dirigehacia el elemento. La acción que tiene lugar cuando el foco se dirige haciaun elemento depende del elemento. Por ejemplo, cuando un usuario activa un vínculodefinido por el elementoA, el agente de usuario normalmente sigue el vínculo. Cuando un usuarioactiva un radiobotón, el agente de usuario cambia el valor del radiobotón.Cuando el usuario activa un campo de texto, éste permite la entrada de texto, etc.

Los siguientes elementos soportan el atributoaccesskey:A,AREA,BUTTON,INPUT,LABEL,LEGEND yTEXTAREA.

Este ejemplo asigna la tecla de acceso "U" a un rótulo asociado con un controlINPUT. Al pulsar la tecla de acceso, el foco se dirige hacia el rótulo,el cual a su vez lo dirige al control asociado. El usuario puede entonces introducirtexto en el áreaINPUT.

<FORM action="..." method="post"><P><LABEL for="nombre-usuario" accesskey="U">User Name</LABEL><INPUT type="text" name="usuario"></P></FORM>

En este ejemplo, asignamos una tecla de acceso a un vínculo definido por el elementoA.Al pulsar esta tecla de acceso, el usuario es llevado a otro documento, en este casouna tabla de contenidos.

<P><A accesskey="C"       rel="contents"      href="http://algunsitio.com/especificacion/contenidos.html">    Tabla de Contenidos</A>

La invocación de teclas de acceso depende del sistema subyacente. Porejemplo, en máquinas que ejecuten MS Windows, normalmente hay que pulsarla tecla "alt" además de la tecla de acceso. En sistemas Apple, normalmentehay que pulsar la tecla "cmd" además de la tecla de acceso.

La representación de teclas de acceso depende del agente de usuario.Recomendamos a los autores que incluyan la tecla de acceso en el texto delrótulo o dondequiera que se aplique la tecla de acceso. Los agentes de usuariodeberían representar las teclas de acceso de tal modo que se enfatice su papely se distinga de otros caracteres (p.ej., subrayándola).

17.12Controles deshabilitados yde sólo lectura

En aquellos contextos en los que la entrada de datos por parte del usuariosea indeseable o irrelevante, es importante poder deshabilitar un control o convertirloen un control de sólo lectura. Por ejemplo, podríamos querer deshabilitar el botónde envío de un formulario mientras que el usuario no haya introducido ciertosdatos obligatorios. Análogamente, un autor podría querer incluir una sección detexto de sólo lectura que debería ser enviada como un valor junto con el formulario.Las siguientes secciones describen los controles deshabilitados y de sólo lectura.

17.12.1Controles deshabilitados

Definiciones de atributos

disabled[CI]
Cuando se establece para un control de formulario, este atributo booleanodeshabilita el control para la entrada de datos por parte del usuario.

Cuando está establecido, el atributodisabled tiene los siguientes efectos sobre un elemento:

Los siguientes elementos soportan el atributodisabled:BUTTON,INPUT,OPTGROUP,OPTION,SELECTyTEXTAREA.

Este atributo se hereda, pero las declaraciones locales prevalecen sobreel valor heredado.

El modo en que se representan los elementos deshabilitados depende delagente de usuario. Por ejemplo, algunos agentes de usuario dibujan en grislos objetos de menú deshabilitados, los rótulos de los botones, etc.

En este ejemplo, el elementoINPUT está deshabilitado. Por tanto, no puede recibirdatos del usuario, y su valor no se enviará con el formulario.

<INPUT disabled name="pedro" value="piedra">

Nota. El único modo de modificar dinámicamente el valor delatributodisabled es por medio de unscript.

17.12.2Controles de sólo lectura

Definiciones de atributos

readonly[CI]
Cuando está establecido para un control de formulario, este atributo booleanoimpide que haya cambios en el control.

El atributoreadonly especifica si el control puede ser modificado por el usuario.

Cuando está establecido, el atributoreadonly tiene los siguientes efectos sobre un elemento:

Los siguientes elementos soportan el atributoreadonly:INPUT yTEXTAREA.

El modo en que se representan los elementos de sólo lectura depende del agente de usuario.

Nota. La única manera de modificar dinámicamente el valor delatributoreadonly es mediante unscript.

17.13Envío de formularios

Las siguientes secciones explican cómo envían los agentes de usuario los datosde los formularios a los agentes procesadores de formularios.

17.13.1Método de envío delformulario

El atributomethod del elementoFORM especifica el método HTTPusado para enviar el formulario al agente procesador. Este atributo puede tenerdos valores:

El método "get" debería usarse cuando el formulario es idempotente (es decir, cuandono tiene efectos secundarios). Muchas búsquedas en bases de datos no tienen efectossecundarios visibles y constituyen aplicaciones ideales del método "get".

Si el servicio asociado con el procesamiento de un formulario causaefectos secundario (por ejemplo, si el formulario modifica una base de datos ola subscripción a un servicio), debería usarse el método "post".

Nota. El método "get" restringe los valores delconjunto de datos del formulario a caracteres ASCII. Sólo el método"post" (conenctype="multipart/form-data") cubre el conjunto de caracteres[ISO10646] completo.

17.13.2Controles con éxito

Uncontrol con éxito es "válido" para su envío. Todos los controles con éxitotienen sunombre de control emparejado con suvalor actual como parte delconjunto de datos del formulario enviado. Un control con éxitodebe estar definido dentro de un elementoFORM y debe tener unnombre de control.

Sin embargo:

Si un control no tienevalor actual cuando se envía elformulario, los agentes de usuario no están obligados a tratarlo como un control con éxito.

Además de esto, los agentes de usuario no deberían considerar a los siguientes como controlescon éxito:

Loscontroles ocultos y loscontroles que no sean representados debido a la configuración de unahoja de estilo pueden tener éxito. Por ejemplo:

<FORM action="..." method="post"><P><INPUT type="password"            name="password-invisible"          value="mipassword"></FORM>

En este ejemplo, seguirá habiendo un valor emparejado con el nombre "password-invisible" queserá enviado con el formulario.

17.13.3Procesamiento de los datosdel formulario

Cuando el usuario envía un formulario (p.ej., activando unbotón de envío), el agente de usuario lo procesa del siguiente modo.

Paso uno: Identificar loscontrolescon éxito 

Paso dos: Construir elconjunto de datos del formulario 

Unconjunto de datos del formulario es una secuencia de parejasnombre de control/valor actual construida a partirde loselementos con éxito.

Paso tres: Codificar el conjunto de datos del formulario 

El conjunto de datos del formulario se codifica a continuación de acuerdo con eltipo de contenido especificado por el atributoenctypedel elementoFORM.

Paso cuatro: Enviar el conjunto de datos del formulario codificado 

Finalmente, los datos codificados se envían al agente procesador designado por elatributoaction usando el protocolo especificado por el atributomethod.

Esta especificación no especifica todos los métodos válidos de envío ni lostipos de contenido que pueden utilizarse con los formularios.Sin embargo, los agentes de usuario HTML 4 deben soportar las convenciones establecidas enlos siguientes casos:

Para cualquier otro valor deaction omethod, el comportamiento queda sin especificar.

Los agentes de usuario deberían representar la respuesta de las transacciones HTTP "get"y "post".

17.13.4Tipos de contenido de formularios

El atributoenctype del elementoFORM especifica eltipo de contenido usado para codificar elconjunto de datos del formulario para su envío al servidor. Losagentes de usuario deben soportar los tipos de contenido enumerados más adelante.El comportamiento para otros tipos de contenido queda sin especificar.

Consulte también la sección sobretransformación del signo & en secuencias de escapepara valores de atributos URI.

application/x-www-form-urlencoded 

Este es el tipo de contenido por defecto. Los formularios enviados con este tipo de contenidodeben codificarse como sigue:

  1. Los nombres de control y los valores se transforman en secuencias de escape.Los caracteres de espacio se sustituyen por'+', y los caracteresreservados se transforman en secuencias de escape según se describe en[RFC1738], sección 2.2: Los caracteres no alfanuméricos se reemplazan por'%HH',un signo de porcentaje y dos dígitos hexadecimales que representan el código ASCII del carácter.Los saltos de línea se representan como parejas "CR LF" (es decir,'%0D%0A').
  2. Las parejas nombre de control/valor se enumeran según el orden en que aparecen en eldocumento. El nombre se separa del valor con un signo'=' y las parejasnombre/valor se separan entre sí con un signo'&'.

multipart/form-data 

Nota. Consulte[RFC2388] para informaciónadicional sobre carga de ficheros, incluyendo cuestiones de compatibilidadcon versiones anteriores, la relación entre "multipart/form-data" y otros tiposde contenido, cuestiones de rendimiento, etc.

Consulte el apéndice para información sobrecuestiones de seguridad relacionadas con los formularios.

El tipo de contenido "application/x-www-form-urlencoded" no es eficientepara enviar grandes cantidades de datos binarios o textos que contenga caracteresno ASCII. Para enviar formularios que contengan ficheros, datos no ASCII, y datosbinarios debería utilizarse el tipo de contenido "multipart/form-data".

El contenido "multipart/form-data" sigue las reglas de todos los flujos de datosMIME multiparte, como se esboza en[RFC2045]. La definiciónde "multipart/form-data" puede encontrarse en el registro[IANA].

Un mensaje "multipart/form-data" contiene una serie de partes, cada unade las cuales representa uncontrol con éxito.Las partes se envían al agente procesador en el mismo orden en que aparecenlos controles correspondientes en el flujo del documento. No deberían aparecerlímites entre partes en ninguno de los datos; el modo en que se consigue estoqueda fuera del alcance de esta especificación.

Como con todos los tipos MIME multiparte, cada parte tiene un encabezado opcional "Content-Type"cuyo valor por defecto es "text/plain". Los agentes de usuario deberían proveer el encabezado"Content-Type", acompañado por un parámetro "charset".

Se espera que cada parte contenga:

  1. un encabezado "Content-Disposition" cuyo valor es "form-data".
  2. un nombre de atributo que especifique elnombre de control delcontrol correspondiente. Los nombres de control codificados originalmente conconjuntos de caracteres no ASCII pueden codificarse usandoel método explicado en[RFC2045].

Así, por ejemplo, para un control llamado "micontrol", la parte correspondiente se especificaríaasí:

Content-Disposition: form-data; name="micontrol"

Como con todas las transmisiones MIME, se utiliza "CR LF" (es decir,'%0D%0A')para separar líneas de datos.

Se puede codificar cada parte, pudiéndose proporcionar el encabezado "Content-Transfer-Encoding"si el valor de esa parte no es conforme con la codificación por defecto(7BIT) (ver[RFC2045], sección 6)

Si se envían los contenidos de un fichero con un formulario, el ficherointroducido debería identificarse con eltipode contenido apropiado (p.ej., "application/octet-stream"). Si deben enviarsevarios ficheros como resultado de la entrada de un solo formulario, deberían serenviados como "multipart/mixed" incluidos dentro del "multipart/form-data".

El agente de usuario debería intentar proporcionar un nombre de fichero paracada fichero enviado. El nombre del fichero puede especificarse con el parámetro"filename" del encabezado 'Content-Disposition: form-data', o, en el caso demúltiples ficheros, en un encabezado 'Content-Disposition: attachment' de la subparte.Si el nombre del fichero del sistema operativo del cliente no está en US-ASCII,el nombre del fichero podría aproximarse o codificarse usando el método de[RFC2045].Esto es conveniente, por ejemplo, en aquellos casos en que los ficheros subidospudieran contener referencias cruzadas (p.ej., un fichero TeX y su descripciónde estilo auxiliar ".sty").

El siguiente ejemplo ilustra la codificación "multipart/form-data". Supongamos quetenemos el siguiente formulario:

 <FORM action="http://servidor.com/cgi/procesar"       enctype="multipart/form-data"       method="post">   <P>   ¿Cómo se llama? <INPUT type="text" name="nombre-envio"><BR>   ¿Qué ficheros va a enviar? <INPUT type="file" name="ficheros"><BR>   <INPUT type="submit" value="Enviar"> <INPUT type="reset"> </FORM>

Si el usuario introduce "Alfredo" en la entrada de texto, y selecciona el fichero de texto"fichero1.txt", el agente de usuario podría enviar los datos siguientes:

   Content-Type: multipart/form-data; boundary=AaB03x   --AaB03x   Content-Disposition: form-data; name="nombre-envio"   Alfredo   --AaB03x   Content-Disposition: form-data; name="ficheros"; filename="fichero1.txt"   Content-Type: text/plain   ... contenidos de fichero1.txt ...   --AaB03x--

Si el usuario eligió un segundo fichero (una imagen) "fichero2.gif", el agente de usuariopodría construir las partes de este modo:

   Content-Type: multipart/form-data; boundary=AaB03x   --AaB03x   Content-Disposition: form-data; name="nombre-envio"   Alfredo   --AaB03x   Content-Disposition: form-data; name="ficheros"   Content-Type: multipart/mixed; boundary=BbC04y   --BbC04y   Content-Disposition: attachment; filename="fichero1.txt"   Content-Type: text/plain   ... contenidos de fichero1.txt ...   --BbC04y   Content-Disposition: attachment; filename="fichero2.gif"   Content-Type: image/gif   Content-Transfer-Encoding: binary   ...contenidos de fichero2.gif...   --BbC04y--   --AaB03x--

anterior siguiente contenidos elementos atributos índice

[8]ページ先頭

©2009-2025 Movatter.jp