类似于HTML的<FORM>。<fieldset>可用来包括一组表单选项,但不是必须的。前面说过,当<card>的ordered设置为false时,手机可以显示一个概要卡片来总结有效的选项,方便用户从中选取表单选项来填写。概要卡片就是根据<fieldset>和独立的输入框<input>以及选单<select>来总结的。语法为:

        <fieldset title="label">表单内容</fieldset>

 可选的title属性除了可以用来表示表单的名字外,还在概要卡片里作为选择项的标题。表单内容可以是嵌套的<fieldset>,输入框<input>,选单<select>和必要的提示文本。

    <input name="variable" title="label" type="type" value="value" default="default" format="specifier" emptyok="false|true" size="n" maxlength="n" tabindex="n"/> 

    用来输入文本,除了name属性是必要的,其他可选。

表 3-4 格式化标记

标记

描述

A

任何符号或者大写字母(不包括数字)

A

任何符号或者小写字母(不包括数字)

N

任何数字(不包括符号或者字母)

X

任何符号、数字或者大写字母(不可改变为小写字母)

X

任何符号、数字或者小写字母(不可改变为大写字母)

M

任何符号、数字或者大写字母(可改变为小写字母)或者多个字符,默认为首字大写

M

任何符号、数字或者小写字母(可改变为大写字母)或者多个字符,默认为首字小写

    为了说明输入格式对用户的影响,请看下面的例子程序:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
    <card id="card1" ordered="false">
        <p>
            USERNAME:<input name="userName" title="User Name" type="text" value="YourNameHere" format="*M" emptyok="false" maxlength="12" tabindex="1"/>
            PASSWORD:<input name="password" title="Password" type="password" format="8x" emptyok="false" maxlength="8" tabindex="2"/>
            COMMENTS:<input name="comments" title="comment" type="text" value="YourCommentsHere" format="*M" emptyok="true" maxlength="30" tabindex="3"/>
        </p>
    </card>
</wml>

    启动Nokia WAP Toolkit,并选择“Go”下的“Open Location”,在输入URL地址后,可以看到模拟器上出现图3-7所示的内容。注意光标默认地指在PASSWORD的编辑框内。


图 3-7 用户输入界面

    选择“Options”进行编辑,多按几次按钮。在输入没有满8个之前选择“OK”,模拟器没有任何反应;当超过8个以后就无法再输入。这就是8x的限制在起作用。并且由于PASSWORD输入属性type为“password”因此显示出来的都是“********”(图3-8)。要注意的是:在输入的时候不要太快,否则总在一个字符上切换。如果读者用过手机,应该知道这点。


图 3-8 Password输入界面

    在删除所有的字符时候,“Clear”变成了“Back”(图3-9)。模拟器返回以前的页面。


图 3-9 删除所有的字符

    当编辑“User Name”的时候,发现输入的自动都变成大写(图3-10)。这是因为M起作用。如果输入超过12个字符,那么将无法再输入字符。这是maxlength在起作用。


图 3-10 编辑User Name

    当然可以使用这个按钮,将输入方式切换到小写(图3-11)。


图 3-11 切换大小写的按钮

    现在可以输入小写字符了!(图3-12)


图 3-12 输入小写字符

    如果这个时候按“OK”,那么USERNAME就变成了“GJTMW.g”(图3-13)。这是由于M前面是“*”的缘故。它不限制输入字符的数目。但是如果将“User Name”中所有的字符清除,再选择“OK”就不行。这是emptyok在起作用。它要求至少输入一个字符。读者自己试试吧!


图 3-13 User Name已经改变

    将上例<card>中的ordered的值改为“true”试试看,然后再在<p>和</p>内加入<fieldset title="field1">和</fieldset>试试看。(Nokia WAP Toolkit好像对这些变化视而不见……)

    <select>选单类似于HTML表单中的<SELECT>。<select>和</select>间可包含<optgroup>和<option>标签,语法如下,所有属性都为可选:

        <select title="label" multiple="false|true" name="variable" default="default" iname="index_var" ivalue="default" tabindex="n">
            <optgroup title="label">选单内容</optgroup>
                <option title="label" value="value" onpick="url">
                    事件或者文本
                </option>
    </select>

    <optgroup>可用来将多个<option>分组,<optgroup>和</optgroup>间还可包括<optgroup>和<option>,该标签目前尚未被支持。
    <option>,类似于HTML中选单的<option>,用来表示选单的可选项。<option>和</option>间可包括事件和选单的显示文本。<option>的属性为可选,其中value属性用来提供值。当选到该项后,将该值赋给<select>的name属性所指定的变量。onpick属性,用来指定用户选到该项并按ACCEPT键后所打开页面的URL。

    为了说明选择项的工作方式,请看下面的例子:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
    <card id="card0" ordered="false">
    <p>
        Please select a city...
        <select title="Cities List" name="city">
            <option title="Beijing" value="c1">Beijing</option>
            <option title="Shanghai" value="c2">Shanghai</option>
            <option title="Hongkong" value="c3">Hongkong</option>
        </select>
        Please select columns...
        <select title="Column List" multiple="true" name="col">
            <option title="Hot News" value="l1">News</option>
            <option title="Cool Sports" value="l2">Sports</option>
            <option title="Pop Enter,,," value="l3">Entertainment</option>
        </select>
    </p>
</card>
</wml>

    使用Nokia WAP Toolkit对该程序进行测试。启动Nokia WAP Toolkit,并选择“Go”下的“Open Location”。在输入URL地址后,可以看到模拟器上出现如图3-14所示。


图 3-14 首页

    图3-15所示是单选框的样子:


图 3-15 单项选择

    图3-16所示的是多项选择框的样子:


图 3-16 多项选择

    图3-17所示的是在完成多项选择后的样子:


图 3-17 完成选择后