前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

HTML/CSS 备忘录 - 05. HTML 表单

一、表单的基本结构

HTML 表单,一个包含交互的区域,用于收集用户提供的数据。

<form action="/" method="post">
  <!-- 文本输入框 -->
  <label for="name">用户名:</label>
  <input type="text" id="name" 
    name="name" required>

  <!-- 密码输入框 -->
  <label for="password">密码:</label>
  <input type="password" id="password" 
    name="password" required>

  <!-- 提交按钮 -->
  <input type="submit" value="提交">
</form>

<form> 元素,用于创建表单:

  • action 属性:表单数据提交的 URL,可被 <button>、<input type="submit"> 、<input type="image"> 元素上的 formaction 属性覆盖。
  • method 属性:提交数据的 HTTP Method,如 post | get 等。
  • enctype 属性:当 method 值为 post 时,其表示将表单的内容提交给服务器的 MIME 类型,如 application/x-www-form-urlencoded(默认值)、multipart/form-data(表单包含 <input type=file> 元素时使用此值)。
  • target 属性:提交表单之后,在哪里显示响应信息,_self(默认)| _blank 等。
  • novalidate 属性:表单提交的时候不再进行验证。(HTML5 新增)

<input> 元素,用于创建交互控件,如文本框、密码框、单选按钮、复选框等:

  • type 属性:表单控件的类型。
  • name 属性:表单控件的名称,作为键值对的一部分与表单一同提交。
  • value 属性:表单控件的初始值。
  • disabled 属性:表单控件是否禁用。
  • form 属性:将控件与表单ID进行关联。(HTML5 新增)
  • required 属性:布尔值,表示该元素为表单必填项。(hidden、range、color 和按钮无该属性,H5新增)。
  • autofocus 属性:布尔属性。当页面加载时 <input> 元素应该自动获得焦点。(HTML5 新增)
  • autocomplete 属性:自动填充特性提示除了 checkbox、radio 和按钮以外,HTML5 新增

<label> 元素,表示用户界面中某个元素的说明:

  • for 属性:指定表单控件的 ID,用于将 label 元素与表单控件进行绑定。

二、常用输入控件

1. 单行文本输入框

<!-- 普通单行文本输入框 -->
<input type="text" 
  name="username" value="liwy" />
<!-- 密码输入框 -->
<input type="password" />
<!-- 搜索输入框(HTML5 新增) -->
<input type="search" 
  id="site-search" name="q" />
<!-- 邮箱类型输入框,默认校验格式(HTML5 新增) -->
<input type="email" 
  id="email" size="30" required 
  pattern=".+@example\.com" />
<!-- 电话类型输入框(HTML5 新增) -->
<input type="tel" 
  id="phone" name="phone" required 
  pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" />
<!-- URL类型输入框,默认校验格式(HTML5 新增) -->
<input type="url" 
  id="url" name="url" size="30" required 
  placeholder="https://example.com" 
  pattern="https://.*" />
  • size 属性:控件的尺寸。
  • maxlength 属性:输入框最大可输入字符数(value)。
  • minlength 属性:输入框最小字符数。
  • pattern 属性:正则约束条件。(HTML5 新增)
  • placeholder 属性:提示文案。(HTML5 新增)

2. 隐藏域

用户不可见的一个输入区域,作用是: 提交表单的时候,携带一些固定的数据。

<input type="hidden" name="tag" value="100" />

3. 单选框/复选框

<!-- 单选框 -->
<input type="radio" name="sex" 
  value="female" checked />女 
<input type="radio" name="sex" 
  value="male" />男

<!-- 复选框 -->
<input type="checkbox" name="hobby" 
  value="smoke" />抽烟 
<input type="checkbox" name="hobby" 
  value="drink" checked />喝酒 
<input type="checkbox" name="hobby" 
  value="perm" />烫头
  • name 属性:数据的名称,每组单选框或者复选框的 name 值需要相同。
  • value 属性:提交的数据值。
  • checked 属性:让该单选按钮默认选中。
  • required 属性:如果含有相同 name 的单选按钮组中任意一个按钮包含 required 属性,那么该组的单选按钮必须被选定。(HTML5 新增)

4. 文件选择

<input type="file" 
  id="avatar" 
  name="avatar" 
  accept="image/png, image/jpeg" />
  • accept 属性:定义了 file 上传控件可选择文件类型,它是一个以逗号间隔的文件扩展名和 MIME 类型列表。
  • multiple 属性:布尔值。是否允许一次选择多个文件。(HTML5 新增)

5. 数值与时间(HTML5 新增)

<!-- 数字类型的输入框,默认校验格式 -->
<input type="number" id="tentacles" 
  name="tentacles" min="10" max="100" />
<!-- 范围选择框,默认 50 -->
<input type="range" id="volume" 
  name="volume" min="0" max="11" />

<!-- 日期选择框 -->
<input type="date" id="start" 
  name="trip-start" value="2018-07-22" 
  min="2018-01-01" max="2018-12-31" />
<!-- 时间选择框 -->
<input type="time" id="appt" name="appt" 
  min="09:00" max="18:00" required />
<!-- 日期+时间选择框 -->
<input type="datetime-local" 
  id="party" name="partydate" 
  value="2017-06-01T08:30" />

<!-- 周选择框 -->
<input type="week" id="week" name="week" 
  min="2018-W18" max="2018-W26" required />
<!-- 月选择框 -->
<input type="month" id="start" name="start" 
  min="2018-03" value="2018-05" />
  • max 属性:最大值。
  • min 属性:最小值。
  • step 属性:增量值。

6. 文本域

<textarea id="story" name="story" 
  rows="5" cols="33">
  今天天气真不错... ...
</textarea>
  • id 属性:允许与 <label> 元素关联。
  • name 属性:用于设置表单提交时发送至服务器的数据项名称。
  • cols 属性:文本控件的可见宽度,以平均字符宽度为单位。若已指定,其值必须为正整数。若未指定,默认值为 20
  • rows 属性:显示控件的指定的可见文本行数,其值必须为正整数。若未指定,默认值为 2。
  • disabled 属性:此布尔属性表示用户无法与控件交互。
  • maxlength 属性:输入框最大可输入字符数。(HTML5 新增)
  • minlength 属性:要求用户输入的最小字符串长度。(HTML5 新增)
  • required 属性:布尔值,表示该元素为表单必填项。(HTML5 新增)
  • placeholder 属性:提示文案。(HTML5 新增)
  • form 属性:将控件与表单ID 进行关联。(HTML5 新增)
  • autofocus 属性:当页面加载时,文本区域自动获得焦点。(HTML5 新增)
  • autocomplete 属性:此属性指示浏览器是否可以自动完成控件的值,on|off(HTML5 新增)
  • wrap 属性:指示控件应如何对表单提交时的值进行换行,soft | hard(HTML5 新增)

7. 下拉框

<select name="from">
  <option value="黑">黑龙江</option>
  <option value="辽">辽宁</option>
  <option value="吉">吉林</option>
  <option value="粤" selected>广东</option>
</select>

<!-- 带分组的下拉框 -->
<select name="pets">
  <optgroup label="4-legged pets">
    <option value="dog" disabled>Dog</option>
    <option value="cat">Cat</option>
    <option value="hamster">Hamster</option>
  </optgroup>
  <optgroup label="Flying pets">
    <option value="parrot">Parrot</option>
    <option value="macaw">Macaw</option>
    <option value="albatross">Albatross</option>
  </optgroup>
</select>

<!-- 数据列表, HTML5 新增 -->
<input list="browsers">
<datalist id="browsers">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>

<select> 标签创建下拉列表:

  • id 属性:允许与 <label> 元素关联。
  • name 属性:指定数据的名称。
  • size 属性:规定下拉列表中可见选项的数目。
  • multiple 属性:布尔值。是否允许一次选择多个文件。
  • disabled 属性:此布尔属性表示用户无法与控件交互。
  • required 属性:布尔值,表示该元素为表单必填项。(HTML5 新增)
  • form 属性:将控件与表单ID 进行关联。(HTML5 新增)
  • autofocus 属性:当页面加载时,文本区域自动获得焦点。(HTML5 新增)
  • autocomplete 属性:此属性指示浏览器是否可以自动完成控件的值,on | off(HTML5 新增)

<option> 标签定义下拉列表中的一个选项:

  • value 属性:这个属性的值表示该选项被选中时提交给表单的值。如果省略了这个属性,值就从选项元素的文本内容中获取。
  • selected 属性:规定选项(在首次显示在列表中时)表现为选中状态。
  • disabled 属性:规定此选项应在首次加载时被禁用。
  • label 属性:用于表示选项含义的文本。如果 label 属性没有定义,它的值就是元素文本内容。

<optgroup> 标签经常用于把相关的选项组合在一起。

  • label 属性:选项组的名字,浏览器用以在用户界面中标记选项。使用这个元素时必须加上这个属性。
  • disabled 属性:如果设置了这个布尔值,则不能选择这个选项组中的任何选项。

<datalist> 数据列表,可用于搜索框的关键字提示(HTML5 新增)

  • 除全局属性为无其他属性

三、按钮

<!-- 普通按钮 -->
<input type="button" value="点我" />
<button type="button">点我</button>

<!-- 提交按钮 -->
<input type="submit" value="点我提交表单" /> 
<button type="submit">点我提交表单</button>
<!-- 图形化的提交按钮 -->
<input type="image" id="image" alt="Login" 
  src="./res/login-button.png" />
<button type="submit">
  <img src="./res/login-button.png" />
</button>

<!-- 重置按钮 -->
<input type="reset" value="点我重置"> 
<button type="reset">点我重置</button>

<button> 元素比 <input> 元素更容易使用样式。你可以在元素内添加 HTML 内容(像 <em>、<strong> 甚至 <img>)。

<input type="submit"> / <input type="image"> / <button type="submit"> 除了 <input> 公共属性外,还支持的额外属性:

  • formaction 属性:一个字符串,指示要将数据提交到的 URL,会覆盖 <form> 上的 action 属性(HTML5 新增)
  • formenctype 属性:一个字符串,标识在将表单数据提交到服务器时要使用的编码方法,会覆盖 <form> 上的 enctype 属性。(HTML5 新增)
  • formmethod 属性:一个字符串,指示提交表单数据时要使用的 HTTP 方法;会覆盖 <form> 上的 method 属性。(HTML5 新增)
  • formnovalidate 属性:布尔属性,如果存在,则指定在提交给服务器之前不应对表单进行验证。会覆盖 <form> 上的 novalidate 属性。(HTML5 新增)
  • formtarget 属性:一个字符串,指定一个名字或关键词来表示在提交表单后在何处显示响应数据。会覆盖 <form> 上的 target 属性。(HTML5 新增)

<input type="image"> 特有属性:

  • src 属性:提交按钮上显示的图像的 URL。
  • width 和 height 属性:设置图片的宽高。
  • alt 属性:提供一个备用字符串,在图像无法加载的情况下作为按钮的标注。

<button> 的其他属性:

  • type 属性:button 的类型。可选值:submit | reset | button。
  • disabled 属性:布尔属性,表示用户不能与 button 交互。
  • form 属性:表示 button 元素关联的 form 元素(HTML5 新增)
  • autofocus 属性:布尔属性,用于指定当页面加载时按钮必须有输入焦点(HTML5 新增)

四、fieldset 表单控件分组

<fieldset>
  <legend>Personalia:</legend>
  Name: <input type="text"><br>
  Email: <input type="text"><br>
  Birth: <input type="text">
</fieldset>

<fieldset> 对表单中的相关元素进行分组:

  • name:fieldset 的名称。(HTML5 新增)
  • disabled :规定该组中的相关表单元素应该被禁用。(HTML5 新增)
  • form:fieldset 所属的一个或多个表单。(HTML5 新增)

<legend> 定义分组标题。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言