如需使表单具有互动性,您需要添加表单元素。 其中包含用于输入和选择数据的控件、用于描述控件的元素、用于对字段进行分组的元素,以及用于提交表单的按钮。
什么是表单元素?
您会看到两个 <input>
元素,即 <input type="text">
和 <input type="file">
。为什么它们看起来不一样?
浏览器会根据元素名称和 type 属性显示不同的界面,使用不同的验证规则,并提供许多其他功能。 使用合适的表单控件有助于您构建更出色的表单。
表单元素的标签
假设您想添加一个输入框,供用户输入自己喜欢的颜色。
为此,您需要在表单中添加 <input>
元素。但是,用户如何知道自己应该填写喜欢的颜色?
如需描述表单控件,请为每个表单控件使用一个 <label>
。
<label for="color">What is your favorite color?</label>
<input type="text" id="color" name="color">
标签元素上的 for
属性与输入元素上的 id
属性相匹配。
捕获用户输入内容
顾名思义,<input>
元素用于收集用户输入。
<label for="color">What is your favorite color</label>
<input type="text" id="color" name="color">
如前所述,id
属性将 <input>
连接到 <label>
。此示例中的名称和类型属性如何?
name 属性
使用 name
属性来标识用户通过控件输入的数据。
如果您提交此表单,此名称将包含在请求中。
假设您将某个表单控件命名为 mountain
,并且用户输入了 Gutenberg
,那么请求中会包含 mountain=Gutenberg
形式的相应信息。
尝试将表单控件的名称更改为 hill
。
如果您正确执行此操作并提交表单,则网址中会显示 hill
。
输入源类型
表单控件有多种类型,它们都具有实用的内置功能,可在不同的浏览器和平台上使用。浏览器会根据 type
属性呈现不同的用户界面、显示不同的屏幕键盘、使用不同的验证规则等。了解如何更改类型。
通过使用 type="checkbox"
,浏览器现在会呈现复选框,而不是文本字段。
复选框还具有其他属性。
您可以设置 checked
属性,以将其显示为已选中。
您还可以选择其他各种类型。 我们将在后续模块中详细介绍。
允许多行文本
假设您需要一个供用户撰写评论的字段。
在这种情况下,如果用户可以输入多行文本,岂不是更好?这就是 <textarea>
元素的用途。
<label for="comment">Comment</label>
<textarea id="comment" name="comment"></textarea>
从选项列表中选择
如何向用户提供可供选择的选项列表?
您可以使用 <select>
元素来实现此目的。
<label for="color">Color</label>
<select id="color" name="color">
<option value="orange">Orange</option>
<option value="pink">Pink</option>
</select>
首先,您需要添加一个 <select>
元素。
与其他所有表单控件一样,您可以使用 id
属性将其与 <label>
相关联,并使用 name
属性为其指定唯一名称。
在 <select>
元素的开始标记和结束标记之间,您可以添加多个 <option>
元素,每个元素代表一个选择。
每个选项都有一个唯一的 value
属性,因此您可以在处理表单数据时区分它们。
选项元素内的文本是人类可读的值。
如果您使用此 <select>
提交表单而不更改所选内容,则请求将包含 color=orange
。但浏览器如何知道应使用哪个选项?
浏览器会使用列表中的第一个选项,除非:
- 一个
<option>
元素具有selected
属性。 - 用户选择其他选项。
预先选择一个选项
借助 selected
属性,您可以预先选择一个选项。无论 <option>
元素的定义顺序如何,此值都会成为默认值。
组表单控件
有时,您需要对表单控件进行分组。您可以使用 <fieldset>
元素来实现此目的。
<fieldset>
<legend>What is your favorite web technology</legend>
<label for="html">HTML</label>
<input type="radio" name="webfeature" value="html" id="html">
<label for="css">CSS</label>
<input type="radio" name="webfeature" value="css" id="css">
</fieldset>
您是否注意到 <fieldset>
元素内的 <legend>
元素?您认为它有什么用途?
如果您的回答是“用于描述一组表单控件”,那么您答对了!
每个 <fieldset>
元素都需要一个 <legend>
元素,就像每个表单控件都需要一个关联的 <label>
元素一样。<legend>
还必须是 <fieldset>
中的第一个元素。
在 <legend>
元素之后,您可以定义应属于该组的表单控件。
提交表单
在了解如何添加表单控件并将其分组后,您可能会想知道用户如何提交表单?
第一种方法是使用 <button>
元素。
<button>Submit</button>
用户点击提交按钮后,浏览器会向 <form>
元素的 action 属性中指定的网址发送请求,其中包含表单控件中的所有数据。
您还可以使用带有 type="submit"
的 <input>
元素,而不是 <button>
元素。输入的外观和行为与 <button>
完全相同。请改用 value
属性,而不是使用 <label>
元素来描述 <input>
。
<input type="submit" value="Submit">
此外,当表单字段处于焦点状态时,也可以使用 Enter
键提交表单。
检验您的掌握情况
测试您对表单元素的了解程度
如何将 <label>
连接到表单控件?
<label>
上的for='color'
,以及<input>
上的name='color'
。<label>
上的for='color'
,以及<input>
上的id='color'
。<label>
上的id='color'
,以及<input>
上的for='color'
。<label>
上的name='color'
,以及<input>
上的for='color
。您使用什么作为多行表单控件?
type='multi-line'
的 <input>
元素。<text>
元素。<textarea>
元素。type='long'
的 <input>
元素。如何提交表单?
<button>
元素。Enter
键。type='submit'
的 <input>
元素。