3.2 新增的表单元素
HTML 5对表单功能的改进包含多个方面,如对表单元素的增加、对input元素类型的增加,以及表单属性的增加等,下面将介绍新增加的几个表单元素。
3.2.1 datalist元素
datalist元素定义输入框的选项列表,选项列表是通过该元素内的option元素进行创建的。该元素需要与input元素配合使用,来定义input可能的值。如果只在页面中定义datalist的列表,在浏览页面时选项不会被显示出,它仅仅是合法的输入值列表。
如果要把datalist元素定义的选项列表绑定到输入框,需要将输入框的list属性的值设置为datalist元素的id属性的值。
【练习2】
细心的用户可以发现,用户在【账户】输入框中输入内容时,将鼠标定位到该输入框时就会显示一些用户名称列表。本次练习通过datalist元素实现选项列表,步骤如下。
(1)在网页中添加datalist元素,并通过option向datalist内添加选项列表。代码如下。
<datalist id="usernamelist" name="unamelist"> <option>lovemyself</option> <option>administrator</option> <option>mengmeng1990</option> <option>huitiaowudetuzi</option> </datalist>
(2)为【账户】输入框的input元素添加list属性,指定该属性的值为datalist元素的id的属性值。代码如下。
<input name="username" type="text" class="login_input" id="username" maxlength="30" value="用户名/邮箱/手机号" style="color:#999999" list="usernamelist">
(3)重新运行页面查看效果,如图3-2所示。
图3-2 datalist元素的使用
3.2.2 output元素
output元素用于不同类型的输出,例如,计算结果或者脚本的其他结果。output元素必须属于某个表单,或者通过属性指定某个表单。简单来说,output元素必须将它书写在表单内部,或对它添加form属性。
output元素与input元素联合使用时,通常还会与JavaScript事件进行结合,这样可以十分方便地查到表单中各个元素的输入内容。
【练习3】
随着社会的不断发展,越来越多的人们开始注重个人的修养和保养问题,尤其是女孩子,她们对自己的体重要求特别严格,那么究竟什么样的范围属于合理体重呢?本次练习根据用户输入的身高和体重进行计算,将计算的结果显示到页面,并且向用户反馈信息。
(1)添加新的页面并且进行设计,在页面中添加表单,向表单中添加用于用户输入的身高和体重输入框,并且添加执行操作的按钮。代码如下。
<form method="post" name="resultform"> <table cellspacing="0" cellpadding="2" border="0" width="250" style="float:left;"> <tbody> <tr> <td> 你的身高: <input size="6" name="sg" class="smin">厘米(cm)<br> 你的体重: <input size="6" name="tz" class="smin">千克(kg) </td> </tr> <tr><td><input type="button" name="btn2" class="testBtn"> </td></tr> </tbody> </table> </form>
(2)继续向表单中添加内容,在表单的合适位置添加一个output元素,该元素向页面输入计算的结果。代码如下。
<output name="result"></output>
(3)为表单中的按钮控件添加onClick事件属性,当用户单击该按钮时触发其Click事件调用JiSuanResult脚本函数。页面按钮的代码如下。
<input type="button" name="btn2" class="testBtn" onClick="JiSuanResult()">
(4)向页面中添加JiSuanResult()函数,在该函数中获取用户在页面中输入的内容,将内容处理完成后再根据公式进行计算。它的计算公式为:体重(kg)除以身高(m)的平方(BMI =kg/m2)。JiSuanResult()函数的代码如下。
function JiSuanResult(){ var forms = document.forms["resultform"]; //获取页面中的表单 var first = forms['sg'].value; //获取用户输入的身高 var second = forms['tz'].value; //获取用户输入的体重 var firstHigh = first/10; //将身高的单位转换为米(m) var result = second/(firstHigh*firstHigh); //计算结果 result = result*100; forms['result'].value = result; //为output元素赋值 if(result>=21<=25){ //根据计算的结果进行判断 alert("恭喜,您的体重在正常范围之内。"); }else if(result<21){ alert("您的体重偏轻,要注意营养啊!"); }else{ alert("不能再吃了,一定要减肥!!"); } }
(5)运行页面查看效果,向网页中输入内容后单击【点击测试】按钮进行测试,效果如图3-3所示。
图3-3 output元素的使用
3.2.3 keygen元素
keygen元素是HTML 5中新增的表单元素,它用于表单的密钥生成器字段,作用是提供一种验证用户的可靠方法。keygen元素在跟随表单提交时会生成两个密钥:私密钥(Private Key)和公密钥(Public Key)。其中,私密钥存储在本地;公密钥发送到服务器端,可以用于之后验证用户客户端证书。
keygen元素中提供了多个属性,常用属性如表3-3所示。
表3-3 keygen元素的常用属性
【练习4】
本次练习简单演示keygen元素的使用,相关人员在页面中添加keygen元素后,运行页面时会自动添加下拉框列表,该列表有两个选项。页面代码如下。
<keygen name="secutity" width="300" />
运行页面查看keygen元素生成的效果,如图3-4所示。
图3-4 keygen元素的使用
3.2.4 optgroup元素
optgroup元素在HTML 4中已经存在,HTML 5中对其进行了扩展。该元素定义选项组,使用该元素允许用户组合选项。当使用一个长的选项列表时,对相关的选项进行组合会使处理更加容易。
使用optgroup元素可以将select元素中的选项进行逻辑分组,optgroup元素必须在select元素中直接定义,而且不允许嵌套,这就意味着不能进行二级分组。optgroup元素有两个常用的属性,它们分别是disabled属性和label属性。其中,前者表示首次加载时是否禁用该选项组,而后者则用来定义分组显示的标签名,但是标签名并不能被当作选择项。
【练习5】
读者查看一些网站时会经常看到下拉框列表选项,选择某个选项可以查询不同的内容。但是,有时列表中还会添加子列表,本节就通过optgroup元素添加组合选项。
(1)在页面中首先添加select元素,它用于显示图书的类型。
(2)向select元素中添加上三个optgroup元素,分别设置这三个optgroup元素的label属性的值,再向该元素中添加option元素。部分代码如下。
<select name="url" id="searchDropdownBox" class="searchSelect" style="top: 0px;"> <optgroup label="按类型"> <option>音乐</option> <option>电器</option> <!-- others --> </optgroup> <optgroup label="按价格"> <option>0-50</option> <option>51-80</option> <!-- others --> </optgroup> <optgroup label="按作者国籍"> <option>中国</option> <option>美国</option> <option>英国</option> </optgroup> </select>
(3)运行页面查看效果,单击下拉框查看列表,效果如图3-5所示。
图3-5 optgroup元素的使用
试一试
前面已经提到过,将select元素的multiple属性的值直接设置为multiple或true,在页面中会显示为列表框。读者可以亲自动手试一试,设置select元素的multiple值,然后再向列表框中添加组合选项。