|
前页|后页| 目录|元素| 特性 表单控件可以是复选框,单选框,标签,菜单等.每个控件可以 分配一个名称.当表单被提交时,一些控件(取决于它们的状态) 的名称和当前值随表单一起发送.提交的值的自然属性取 决于控件(例如:文本框的值是输入的文本). 注意:这份说明书在表单显示问题 中包含了更多的关于表单的细节信息.关于对表格内容编 码的信息已经打算加在这份草案以后的版本中. FORM元素<!ELEMENT FORM - - %block -(FORM)> <!ATTLIST FORM %attrs; --%coreattrs,%i18n,%events -- action %URL #REQUIRED--server-side form handler -- method (GET|POST)GET --HTTPmethod used to submit the form -- enctype %ContentType;"application/x-www-form-urlencoded" onsubmit%Script #IMPLIED?--the form was submitted -- onreset %Script #IMPLIED?--the form was reset -- target CDATA #IMPLIED?--where to render result -- accept-charset CDATA #IMPLIED?-- list of supported charsets -- ?>开始标记:需要,结束标记:需要 特性定义
这个特性的缺省值是保留字串"UNKNOWN".用户代理器可 以把此值解译作包含在FORM 元素中的用于传送文档的编码方式.
在FORM元素中任何特 性的name特性有效范围是FORM 元素. 下面的例程指定了提交的表单将被"adduser" 程式处理.这个表单将通过HTTP POST方法发送到程式. <FORM action="http://somesite.com/prog/adduser" method="post"> ?I>...form contents... </FORM>下面的例程展示了如何把一个提交表单发送到一个电子 邮件地址. <FORM action="mailto:Kligor.T@gee.whiz.com" method="post"> ?I>...form contents... </FORM> 控件下面的控件元素通常出现于一个FORM 元素声明中.然而,这些元素当用来建立用户接口时也可 以出现在FORM元素声明 外.这将在说明书中稍后讨论,在内部事件 章节中.控件标签
对于那些含有暗式标签的控件,用户代理器应当把value 特性值作为标签字串. 对于那些没有暗式标签的控件,作者必须在控件元素定 义的前或后提供标签.举例说明如下. INPUT元素<!ENTITY % InputType ?"(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET | FILE | HIDDEN | IMAGE | BUTTON)" > <!-- HSPACE and VSPACE missing due to lack of widespread support --> <!ELEMENTINPUT - O EMPTY> <!ATTLIST INPUT ?%attrs; --%coreattrs,%i18n,%events -- type %InputType TEXT --what kind of widget is needed -- name CDATA #IMPLIED?--required for all but submit &reset -- value CDATA #IMPLIED?--required for radio and checkboxes -- checked (checked)#IMPLIED?--for radio buttons and check boxes -- disabled?(disabled) #IMPLIED?--control is unavailable in this context -- readonly?(readonly) #IMPLIED?--for text and passwd -- size CDATA #IMPLIED?--specific to each type of field -- maxlength NUMBER #IMPLIED?--max chars for text fields -- src %URL #IMPLIED?--for fields with images -- alt CDATA #IMPLIED?--description for text only browsers -- usemap %URL #IMPLIED?--use client-side image map -- align %IAlign #IMPLIED?--vertical or horizontal alignment -- tabindexNUMBER #IMPLIED?--position in tabbing order -- onfocus %Script #IMPLIED?--the element got the focus -- onblur %Script #IMPLIED?--the element lost the focus -- onselect%Script #IMPLIED?--some text was selected -- onchange%Script #IMPLIED?--the element value was changed -- accept CDATA #IMPLIED?-- list of MIME types for file upload -- ?>开始标签:需要,结束标签:禁止 特性定义
输入格式INPUT元素的type 特性定义了哪种控件将被建立.
数个在同一个表单中的复选框可以使用同一个名称.在 提交时,每一个"打开"的具有相同名称的复选框使用相同 的名称组件提交一个名称/值对.这允许用户代理器对给定 的属性选择超?过一个的值. 数个在同一个表单的单选框可以有一个名称.然而,它 些按钮中在同一个时刻只有一个可以被"打开".在某个设 定为"打开"的时候,所有相关的按钮都是"关闭".因此,对于 相关单选按钮,只有一个名称/值对被提交. 一个表单可以包含一个以上的提交按钮.只有一个激活 的名称/值对与表单一起被提交. 当一个定位装置在图像上单击的时候,表单被提交并且 位置被传送到服务器.x 值是从图像的左面开始的以像素 为单位的尺寸,而?y 值是从图像的顶端开始的以像素为单 位的尺寸.这提交的数值包含?name.x=x-value 和name.y=y-value 时,这里的"name"是name特性值,而x-value 和y-value 是x 和y 坐标各自的值. 如果服务器根据单击的位置采用不同的对待,?使用非图 案化浏览器的用户将失去优势.由于这个原因,建议你考 虑轮替途径:
<INPUT type="button" value="Click Me" onclick="verify()">请参见?内部事件章节获得更多的 关于脚本和事件的信息. 这个控件格式通常被用来保存客户端/服务器之间的可能 被HTTP丢失的交换信息. INPUT控件的hidden 格式有其自身的与表单一起传送的值.共同包含于中的也 不被渲染因为风格信息的原因.下列的控件,当然不被用 户代理器渲染,将与表单一起提交它们的值. <INPUT type="password" style="display:none" name="invisible-password" value="mypassword"> 用户代理器就当把这些文件压缩封装为一个MIMEmultipart 文档(参见[RFC2045]). 这个结构把每个文件以一种MIMEmultipart 的格式压缩封装 把整体传送给HTTP.每个主干部分可以被标签为一个联系 于"Content-Type"的格式,包括如果需要一个"charset"参数来 指定字符编码. <FORM action="http://somesite.com/prog/adduser" method="post"> <P> First name: <INPUT type="text" name="firstname"> <BR> Last name: <INPUT type="text" name="lastname"> <BR> email: <INPUT type="text" name="email"> <BR> <INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <INPUT type="submit" value="Send"> <INPUT type="reset"> </FORM>这个表单?会被?如下渲染:
在此例中,用户被提示输入将于表单一起提交的一个文 件和一串文件名列表.通过指定enctype 值为"multipart/form-data",每个文件的内容均在存放于一个 multipart 文档的单独的部分中. <FORM action="http://server.dom/cgi/handle" enctype="multipart/form-data" method="post">that is your name? <INPUT type="text" name="name_of_sender"> that files are you sending? <INPUT type="file" name="name_of_files"> </FORM>请参阅[RFC1867] 来获得更多的关于文件提交的信息. ISINDEX元素ISINDEX是不赞成的.用户应当使用INPUT 元素来代替它.<!ELEMENTISINDEX - O EMPTY> <!ATTLIST ISINDEX %coreattrs; --id, class, style, title-- %i18n; --lang, dir-- prompt CDATA #IMPLIED?-- prompt message -->开始标记:需要,结束标记:禁止 特性定义
下面的ISINDEX声 明: <ISINDEX prompt="Enter your search phrase: ">等同于下面的INPUT声 时: <FORM action="..." method="post"> Enter your search phrase: <INPUT type="text"> </FORM>ISINDEX的语义问题.目前,只 有当编码文当的基URL是一个HTTP URL时ISINDEX 有其完善定义的语义.在实践中,由于没有其它的可用于 URL结构的不同字符集,输入字串受Latin-1的限制. BUTTON元素<!ELEMENTBUTTON - - (%inline | %blocklevel)* -(A | %formctrl | FORM | ISINDEX | FIELDSET)> <!ATTLIST BUTTON ?%attrs; --%coreattrs,%i18n,%events -- name CDATA #IMPLIED?--for scripting/forms as submit button -- value CDATA #IMPLIED?--gets passed to server when submitted -- type(submit|reset)#IMPLIED?--for use as form submit/reset button -- disabled (disabled)?#IMPLIED?--control is unavailable in this context -- tabindexNUMBER #IMPLIED?--position in tabbing order -- onfocus %Script #IMPLIED?--the element got the focus -- onblur %Script #IMPLIED?-- the element lost the focus -- ?>开始标记:需要,结束标记:需要 特性定义
一个格式为"submit"且内容为一张图像(如IMG 元素)的BUTTON元素非 常近似于一个格式为"image"的INPUT 元素.两者都引起表单的提交,但它们的表现不同.在这种 上下文中,一个INPUT元 素被打算作为一个"flat"图像渲染,而一个BUTTON 被打算作为一个按钮渲染(例如当单击时的缓动和上/下阴 影). 下面的例程通过BUTTON 按钮实例代替建立提交和复位按钮的INPUT 元素来扩展了前例.这个按钮通过IMG 元素来包含图像. <FORM action="http://somesite.com/prog/adduser" method="post"> <P> First name: <INPUT type="text" name="firstname"><BR> Last name: <INPUT type="text" name="lastname"><BR> email: <INPUT type="text" name="email"><BR> lt;INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <BUTTON name="submit" value="submit" type="submit"> Send<IMG src="/icons/wow.gif" alt="wow"></BUTTON> <BUTTON name="reset" type="reset"> Reset<IMG src="/icons/oops.gif" alt="oops"></BUTTON> </FORM>如果一个BUTTON 与IMG元素一起 使用.我们建议采用IMG 元素的alt特性 来提供一个描述给看不到这个图像的用户. 把一个图像映像与一个作为BUTTON
元素内容的IMG
联系起来是非法的.
非法例程:
<BUTTON> <IMG src="foo.gif" usemap="..."> </BUTTON>一个格式为"reset"的BUTTON 元素与一个格式为"reset"的INPUT 元素相当近似.两种情况都控制重新获得初始值,但BUTTON 元素约许更丰富的展现. BUTTON元素也能够 与脚本共同使用,在这种情况下它的type 应当为"button".当这样的一个按钮被激活时,一个客户端 脚本被运行.我们在这个说明书的后面的内部事件 章节讨论BUTTON的使 用. SELECT 和?A NAME="edef-OPTION">OPTION 元素<!ELEMENTSELECT - - (OPTION+)> <!ATTLIST SELECT ?%attrs; --%coreattrs,%i18n,%events -- name CDATA #REQUIRED--field name -- size NUMBER #IMPLIED?--rows visible -- multiple?(multiple) #IMPLIED?--default is single selection -- disabled?(disabled) #IMPLIED?--control is unavailable in this context -- tabindexNUMBER #IMPLIED?--position in tabbing order -- onfocus %Script #IMPLIED?--the element got the focus -- onblur %Script #IMPLIED?--the element lost the focus -- onselect%Script #IMPLIED?--some text was selected -- onchange %Script #IMPLIED?-- the element value was changed -- ?>开始标记:需要,结束标记:需要 SELECT特性定义
<!ELEMENTOPTION - O (#PCDATA)*> <!ATTLIST OPTION %attrs; --%coreattrs,%i18n,%events -- selected(selected) #IMPLIED disabled(disabled) #IMPLIED?--control is unavailable in this context -- value CDATA #IMPLIED?-- defaults to element content -- >开始标记:需要,结束标记:可选 OPTION特性定义
SELECT后跟提提交 与复位按钮. <FORM action="http://somesite.com/prog/component-select" method="post"> <SELECT multiple size="4" name="component-select"> <OPTION selected value="Component_1_a">Component_1</OPTION> <OPTION selected value="Component_1_b">Component_2</OPTION> <OPTION>Component_3</OPTION> <OPTION>Component_4</OPTION> <OPTION>Component_5</OPTION> <OPTION>Component_6</OPTION> <OPTION>Component_7</OPTION> </SELECT> <INPUT type="submit" value="Send"><INPUT type="reset"> </FORM>当表单被提供时,每个选择项目将与"component-select"名称 成对并提交.提交的每个OPTION 的值则是它的风容,除非在哪里使用了value特性来 覆盖它(这里的前两个组件). TEXTAREA元素<!ELEMENTTEXTAREA - - (#PCDATA)*> <!ATTLIST TEXTAREA ?%attrs; --%coreattrs,%i18n,%events -- name CDATA #REQUIRED rows NUMBER #REQUIRED cols NUMBER #REQUIRED disabled?(disabled) #IMPLIED?--control is unavailable in this context -- readonly?(readonly) #IMPLIED tabindexNUMBER #IMPLIED?--position in tabbing order -- onfocus %Script #IMPLIED?--the element got the focus -- onblur %Script #IMPLIED?--the element lost the focus -- onselect%Script #IMPLIED?--some text was selected -- onchange %Script #IMPLIED?-- the element value was changed -- ?>开始标记:需要,结束标记:需 要?/B> 特性定义
<FORM action="http://somesite.com/prog/text-read" method="post"> <TEXTAREA rows="20" cols="80"> First line of initial text. Second line of initial text. </TEXTAREA> <INPUT type="submit" value="Send"><INPUT type="reset"> </FORM>设置readonly 特性允许作者在TEXTAREA 显示不可修改的文本.这不同于在文档中使用标准标注文 本因为TEXTAREA的值 与表单一起被提交. 当提交域内容时建议用户代理器遵照CR,LF(ASCII10进 制13,10)行结束准则.提交数据的字符集应当为ISO Latin-1, 除非服器器预先指定可以支持轮替的字符集. LABEL元素<!ELEMENTLABEL - - (%inline)* -(LABEL) -- field label text --> <!ATTLIST LABEL ?%attrs; --%coreattrs,%i18n,%events -- for IDREF #IMPLIED?--matches field IDvalue -- disabled(disabled)#IMPLIED?--control is unavailable in this context -- accesskey CDATA #IMPLIED?--accessibility key character -- onfocus %Script #IMPLIED?--the element got the focus -- onblur %Script #IMPLIED?-- the element lost the focus -- ?>开始标记:需要,结束标记:需要 特性定义 在它处定义的特性
当一个LABEL元素得 到焦点时,它把焦点传送到与之相关的控件.查见下面的 access keys章节例程. 为了显式地把一个标签联系到控件,参见LABEL 的for特性. 这个例程建立一个表格来对齐两个INPUT 控件以及相应的关联标签.每个标签到显式地联接到一个 INPUT元素. <FORM action="..." method="post"> <TABLE> <TR> <TD> <LABEL for="fname">First Name</LABEL> <TD><INPUT type="text" name="firstname" id="fname"> <TR> <TD><LABEL for="lname">Last Name</LABEL> <TD><INPUT type="text" name="lastname" id="lname"> </TABLE> <FORM>这个例程以包含LABEL 元素扩展了前例.注意LABEL 元素通过id特性 与INPUT元素联接. <FORM action="http://somesite.com/prog/adduser" method="post"> <P> <LABEL for="firstname">First name: </LABEL> <INPUT type="text" id="firstname"><BR> <LABEL for="lastname">Last name: </LABEL> <INPUT type="text" id="lastname"><BR> <LABEL for="email"email: </LABEL> <INPUT type="text" id="email"><BR> <INPUT type="radio" name="sex" value="Male"> Male<BR> <INPUT type="radio" name="sex" value="Female"> Female<BR> <INPUT type="submit" value="Send"> <INPUT type="reset"> </FORM>一个以上的LABEL 可以通过for特性建立 多参照被联接到同一个控件. 为了隐式地把一个标签联系到另一个控件,来控制LABEL 的内容.这种情况下,LABEL 只可以包含一个其它控件元素.标签本身可以在联系控件 的前面或后面. 在此例中,我们隐式地把两个标签联系到 两个INPUT元素.注意隐 式方法阻止我们在表格中划分标签和与之相关的控件(参 见前例). <FORM action="..." method="post"> <LABEL> First Name <INPUT type="text" name="firstname"> </LABEL> <LABEL> <INPUT type="text" name="lastname"> Last Name </LABEL> </FORM> FIELDSET 和?A NAME="edef-LEGEND">LEGEND 元素<!-- #PCDATA is to solve the mixed content problem, per specification only whitespace is allowed there! ?-> <!ELEMENTFIELDSET - - (#PCDATA,LEGEND,%block)> <!ATTLIST FIELDSET %attrs; -- %coreattrs, %i18n, %events -- > <!ELEMENTLEGEND - - (%inline;)+> <!ENTITY % LAlign "(top|bottom|left|right)"> <!ATTLIST LEGEND --fieldset legend -- %attrs; --%coreattrs,%i18n,%events -- align %LAlign; #IMPLIED?--relative to fieldset -- accesskey CDATA #IMPLIED?-- accessibility key character -- ?>开始标记:需要,结束标记:需要 LEGEND特性定义
LEGEND元素允许设
计者为一个FIELDSET
分配一个标签.当FIELDSET
被渲染为不可视时它提高了处理能力.当渲染为可视时,
设定LEGEND元素的align
特性可以使之对齐于FIELDSET.?!-- the name was changed from CAPTION since a major vendor reported implementation difficulties in using CAPTION for both FIELDSET and TABLE, apparently associated will error recovery code -->
<FORM action="..." method="post"> <FIELDSET> <LEGEND align="top">Personal Information</LEGEND> Last Name: <INPUT name="personal_lastname" type="text" tabindex="1"> First Name: <INPUT name="personal_firstname" type="text" tabindex="2"> Address: <INPUT name="personal_address" type="text" tabindex="3"> ...more personal information... </FIELDSET> <FIELDSET> <LEGEND align="top"> Medical History</LEGEND> <INPUT name="history_illness"? type="checkbox" value="Smallpox" tabindex="20"> Smallpox</INPUT> <INPUT name="history_illness" type="checkbox" value="Mumps" tabindex="21"> Mumps</INPUT> <INPUT name="history_illness" type="checkbox" value="Dizziness" tabindex="22"> Dizziness</INPUT> <INPUT name="history_illness" type="checkbox" value="Sneezing" tabindex="23"> Sneezing</INPUT> ...more medical history... </FIELDSET> <FIELDSET> <LEGEND align="top">Current Medication</LEGEND> Are you currently taking any medication? <INPUT name="medication_now" type="radio" value="Yes" tabindex="35">Yes</INPUT> <INPUT name="medication_now" type="radio" value="No" tabindex="35">No</INPUT> If you are currently taking medication, please indicate it in the space below: <TEXTAREA name="current_medication" rows="20" cols="50" tabindex="40"> </TEXTAREA> </FIELDSET> </FORM>注意在此例中,我们可以通过在每个在FIELDSET 中对齐元素(通过风格页),加入脚本(就是说,只有当他或 她打开"current medication"文本区域表示还在用药中)等等来 提高表单的展现. 给一个元素焦点在HTML活动元素必须由于用户的打算的任务而得到?得到 焦点.例如,用户必须激活一个由A 元素指定的链接来追随指定的链接.类似的,用户代理器 为输入文字而给一个TEXTAREA 赋于焦点.有数个方法把焦点赋于一个元素:
制表键导航特性定义 制表键次序指定了当用户通过键盘导航时哪个元素将得 到焦点.制表键次序可以在其它嵌套元素中间包含元素.应当被用户代理器导航获得焦点的元素根据下列原则:
<HTML> <BODY> ...some text... Click to go to the? <A tabindex="10" href="http://www.w3.org/">W3C Website.</A> ...some more... <BUTTON type="button" name="get-database" tabindex="1" onclick="get-database"> Click me to receive the current database. </BUTTON> ...some more... <FORM action="..." method="post"> <INPUT tabindex="1" type="text" name="field1"> <INPUT tabindex="2" type="text" name="field2"> <INPUT tabindex="3" type="submit" name="submit"> </FORM> </BODY> </HTML>制表键.在用户的定义中的实际的 键次序引起制表键导航或元素的激活(例如"tab"键用来导 航而"enter"则与激活选定元素相关). 用户代理器也可以定义一个键次序来相反的导航制 表键次序.当到达制表键次序的最后(或开始时),用户代 理器会绕转到开始(或结尾). 热键
这列的元素支持accesskey 特性:LABEL,A, CAPTION和LEGEND. 这个例程指定热键"U"给一个联系于INPUT 控件的标签.键入热键则把焦点发送到标签并依次给予相 关的控件.然后用户可以INPUT 区域中输入文字. <FORM action="..." method="post"> <LABEL for="user" accesskey="U"> User Name </LABEL> <INPUT type="text" name="user"> </FORM>在此例中,我们为一个通过A 元素定义的链接分配一个热键.键入此键可以把用户带到 另一个文档,在此例中是一个目录表格. <A accesskey="C"? href="http://somplace.com/specification/index.html"> Table of Contents</A>热键的实现取决于下层系统.例如,在运行MS Windows 的机构 上,某人通常键下"alt"键作为额外的热键.在Apple 系统中, 某人通常按下"cmd"键作为额外的热键. 对于热键的处理取决于用户代理器.我们建议用户在标 签中包含热键或指明提供的热键.用户代理器会以一种强 调的区别于其它字符的方式来渲染热键的角色(例如下划 线). 禁止和只读元素哪里的用户输入对上下文来说是不希望?的或不相干,?能够 禁止一个元素或以只读方式渲染一个元素是重要的.例如, 某人可能希望禁止一个表单的提交按钮直到某些需要的 数据被输入.类类似的,一个作者可能希望包含一条只读 文字并必须能够作为一个值与表单一起被提交.下面的章 节描述了禁止的和只读的元素.禁止元素特性定义
当设定时,the disabled 特性具有下列对元素的影响: 禁止元素如何被渲染取决于用户代理器.例如,某些用 户代理器通过"gray out"来禁止下拉框条目,按钮标签等等. 在此例中,禁止的INPUT 元素无法收到用户输入并且值不与表单被提交. <INPUT disabled name="fred" value="stone">注意:唯一能够动态修改disabled 特性的值的方法是通过一段脚本. 只读元素特性定义 readonly特性指定元 素是否可以被用户修改.当设定时,readonly
特性对一个元素有下列的影响:
只读元素如何被渲染取决于用户代理器. 注意:动态修改readonly 特性的值的唯一方法是通过一段脚本. 表单提交哪个元素值被提交了并非所有元素和它们的值与表单被提交. 一致性用户代理器应当不提交: |