Blogger Information
Blog 5
fans 0
comment 0
visits 3103
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0403 第3章 html5常用元素2
我通过
Original
569 people have browsed it

0403 第3章 html5常用元素2

表单与控件元素

  • 表单分为表单元素与控件元素二部分
  • 表单元素仅一个: <form>
  • 表单控件元素,根据类型不同,有多个

1. 表单元素<form>

1.1 常用属性

序号 属性 描述
1 action 表单提交的 URL 地址(处理表单请求的脚本)
2 method 表单提交类型:GET/POST
3 enctype 设置表单提交数据的编码方式
4 name 表单唯一名称,与 ID 同义
5 target 打开请求 URL 的方式,如果_blank

1.2 请求类型method

  • web 请求方式有二种: 超链接与表单提交
  • 超链接就是使用<a>标签发起请求,其实就是GET请求
  • 表单提交默认就是GET请求,但例用最多的是POST
  • 请求类型属性action的取值
序号 允许值 描述
1 GET 默认值,表单数据以请求参数形式通过 URL 提交, 数据量最大 2K
2 POST 表单数据放在请求体中发送,数据量更大也更安全

1.3 编码方式enctype

序号 允许值 适用场景 描述
1 application/x-www-form-urlencoded 接收value 默认值,使用 URL 编码,GET/POST 均适合
2 multipart/form-data 文件上传 采用二进制流处理,会把文件域中的内容封装到请求参数中,适合
3 text/plain 电子邮件 action="mailto:URL

1.4 表单名称name

序号 功能 描述
1 标识表单元素 id一样,用来唯一标识该表单元素
2 绑定表单元素 用于表单控件元素的 form 属性,用来绑定所属表单
3 访问表单元素 快捷访问内部控件元素,如form.input.value

1.5 打开方式target

序号 允许值 描述
1 _self 默认值,当前窗口打开提交的 URL
2 _blank 新窗口打开提交的 URL
3 _parent 父窗口打开提交的 URL
4 _top 顶层窗口打开提交的 URL

2. 表单控件元素<input>

2.1 常用属性

序号 属性 描述
1 type 控件类型,如文本框, 复选框…
2 name 请求参数的名称,对应于脚本处理的变量名
3 value 请求参数的值,对应于脚本处理的变量值,使用预定义值控件无效
4 form 控件所属表单
5 placeholder 仅*限输入框textpassword,输入框的提示信息
6 list 仅*限输入框textpassword,下拉框智能提示
7 autocomplate 仅*限输入框textpassword,自动完成(历史记录)
8 maxlength 仅*限输入框text/password, 允许输入最大字符数量
9 checked 仅*限单选框radio, 复选框checkbox(布尔属性)
10 readonly 元素只读,但通过 JavaScript 可修改(布尔属性)
11 disabled 元素禁用,(布尔属性)
12 autofocus 自动获取焦点,一个表单仅*限一个控件
13 src 仅*限图像域images, 图像 URL 地址
14 width 仅*限图像域images, 图像宽度
15 height 仅*限图像域images, 图像高度

2.2 type类型

  • 常用类型
序号 类型 描述
1 <input type="text"> 单行文本框 (默认值)
2 <input type="password"> 密码输入框
3 <input type="radio"> 单选框
4 <input type="checkbox"> 复选框
5 <input type="image"> 图像域/提交表单
6 <input type="file"> 文件上传域
7 <input type="hidden"> 隐藏域
  • html5 新增类型
序号 类型 描述
1 <input type="email"> 电子邮件
2 <input type="data"> 日期
2 <input type="data"> 日期
4 <input type="datetime-local"> 本地日期时间
5 <input type="tel"> 电话号码
6 <input type="url"> URL 地址
7 <input type="number"> 数值
8 <input type="range"> 范围拖动条
9 <input type="search"> 搜索框/移动
10 <input type="color"> 拾色器

2.3 常用事件属性

序号 事件属性 描述
1 onfocus 获取焦点时触发
2 onblur 失去焦点时触发
3 onchange 失去焦点,且值发生变化时触发
4 oninput 值发生变化(不等失去焦点)时触发
5 onkeydown 按下键盘时触发
6 onkeyup 抬起键盘时触发
7 onclick 鼠标单击时触发
8 onselect 选择内容文本时触发

2.4 示例

效果图

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>表单之input</title>
  7. <style>
  8. form {
  9. padding: 20px;
  10. width: 350px;
  11. box-shadow: 0 0 8px #888;
  12. border-radius: 10px;
  13. box-sizing: border-box;
  14. margin: auto;
  15. background-color: lightskyblue;
  16. display: grid;
  17. gap: 15px;
  18. }
  19. form > section {
  20. display: grid;
  21. grid-template-columns: 60px 1fr;
  22. }
  23. h3 {
  24. text-align: center;
  25. }
  26. input[type="image"] {
  27. justify-self: center;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <h3>用户注册</h3>
  33. <form
  34. action="handle.php"
  35. method="post"
  36. enctype="application/x-www-form-urlencoded"
  37. id="register"
  38. >
  39. <!-- 单行文本输入框 -->
  40. <section>
  41. <label for="username">用户名:</label>
  42. <!-- 必选且自动获取焦点 -->
  43. <input
  44. type="text"
  45. name="username"
  46. id="username"
  47. maxlength="20"
  48. placeholder="不少于6位"
  49. required
  50. autofocus
  51. />
  52. </section>
  53. <!-- 密码输入框 -->
  54. <section>
  55. <label for="password">密码:</label>
  56. <input
  57. type="password"
  58. name="password"
  59. id="password"
  60. size="10"
  61. placeholder="不少于8位"
  62. required
  63. />
  64. </section>
  65. <!-- 单选框 -->
  66. <section>
  67. <label for="secret">性别:</label>
  68. <div>
  69. <!-- 只允许返回一个值,多个input的name属性值必须相同 -->
  70. <input type="radio" name="gender" id="male" value="male" /><label
  71. for="male"
  72. ></label
  73. >
  74. <input type="radio" name="gender" id="female" value="female" /><label
  75. for="male"
  76. ></label
  77. >
  78. <!-- checked: 默认选项 -->
  79. <input
  80. type="radio"
  81. name="gender"
  82. id="secret"
  83. value="female"
  84. checked
  85. /><label for="secret">保密</label>
  86. </div>
  87. </section>
  88. <!-- 复选框 -->
  89. <section>
  90. <label for="programme">兴趣:</label>
  91. <div>
  92. <!-- 允许返回多个值,属性名采用数组格式,便于后端处理 -->
  93. <input type="checkbox" name="hobby[]" id="game" checked /><label
  94. for="game"
  95. >游戏</label
  96. >
  97. <input type="checkbox" name="hobby[]" id="travel" checked /><label
  98. for="travel"
  99. >旅游</label
  100. >
  101. <input
  102. type="checkbox"
  103. name="hobby[]"
  104. value="shoot"
  105. id="shoot"
  106. /><label for="shoot">摄影</label>
  107. <input
  108. type="checkbox"
  109. name="hobby[]"
  110. value="programme"
  111. id="programme"
  112. checked
  113. /><label for="programme">编程</label>
  114. </div>
  115. </section>
  116. <!-- 文件域 -->
  117. <section>
  118. <label for="userpic">头像:</label>
  119. <!-- 设置<form enctype="multipart/form-data">,且为POST提交 才有效-->
  120. <input type="file" name="user_pic" id="userpic" />
  121. <!-- 隐藏域: 限制上传文件大小不超过8M -->
  122. <input type="hidden" name="MAX_FILE_SIZE" value="8388608" />
  123. </section>
  124. <!-- 预定义复合框 -->
  125. <section>
  126. <label for="course">课程:</label>
  127. <input type="text" name="course" list="course" />
  128. <datalist id="course">
  129. <!-- 此<option>使用单标签,与<select>中不同 -->
  130. <option value="HTML/CSS开发与实战"> </option>
  131. <option value="JavaScript基础与实战"> </option>
  132. <option value="PHP开发基础"> </option>
  133. <option value="Laravel基础与实战"> </option>
  134. </datalist>
  135. </section>
  136. <!-- 图像域: 提交按钮为图像 -->
  137. <!-- 返回点击图片的x/坐标,推荐加上name属性,返回有语义坐标 -->
  138. <!-- 测试提交,启动一个本地Web服务器: php -S localhost:8888 -->
  139. <input
  140. type="image"
  141. src="btn.png"
  142. alt="submit"
  143. name="submit"
  144. width="100"
  145. />
  146. </form>
  147. <hr />
  148. <!-- 表单控件元素不一定必须写到<form>标签内 -->
  149. <!-- 表单控件使用form属性,将它与所属表单绑定 -->
  150. <section>
  151. <label for="email">邮箱:</label>
  152. <input type="email" name="email" id="email" form="register" />
  153. </section>
  154. <section>
  155. <label for="age">年龄:</label>
  156. <input
  157. type="number"
  158. name="age"
  159. id="age"
  160. form="register"
  161. min="18"
  162. max="60"
  163. step="2"
  164. value="22"
  165. />
  166. </section>
  167. </body>
  168. </html>

3. 控件标签元素<label>

  • <label>元素没有namevalue属性,不会创建请求参数
  • 它存在的意义就是关联控件,当点击它时将焦点自动落在关联控件内部
  • 语法: <label for="关联控件的id属性值">(也支持三大通用属性)
  • <label>有二种方式与控件元素进行关联/绑定
序号 关联方式 示例代码
1 显式关联 <label for="email">Email:</label><input type="email" id="email">
1 隐式关联 <label>Email:</label><input type="email"></label>

推荐使用显式关联, 案例参考<input>示例


4. 按钮控件元素<button>

4.1 与<input>对比

序号 <button> 替代的<input>
1 <button type="...">按钮文本</button> <input type="..." value="按钮文本">
2 <button><img src="..."></button> <input type="image" src="...">图像域

4.2 常用属性

序号 属性 描述
1 type 必须使用预定义的submit, button, reset之一
2 name 按钮的唯一名称,与 ID 等效
3 value 按钮文本初始值,可通过 JavaScript 修改
4 disabled 禁用按钮
5 form 按钮所属表单(此时按钮type默认类型为submit提交)
6 formaction 设置不同按钮可将表单数据提交到不同的 URL 处理
7 form*** 动态设置<form>属性值,如formmethod="GET"

4.3 示例

注册/登录

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>按钮元素</title>
  7. <style>
  8. form {
  9. padding: 20px;
  10. width: 350px;
  11. box-shadow: 0 0 8px #888;
  12. border-radius: 10px;
  13. box-sizing: border-box;
  14. margin: auto;
  15. background-color: lightskyblue;
  16. display: grid;
  17. gap: 15px;
  18. }
  19. form > section {
  20. display: grid;
  21. grid-template-columns: 60px 1fr;
  22. }
  23. h3 {
  24. text-align: center;
  25. }
  26. section:last-of-type {
  27. display: grid;
  28. grid-template-columns: 1fr 1fr;
  29. column-gap: 10px;
  30. }
  31. button {
  32. height: 30px;
  33. border: none;
  34. outline: none;
  35. }
  36. button:hover {
  37. background-color: lightseagreen;
  38. color: white;
  39. cursor: pointer;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <h3>登录/注册</h3>
  45. <form action="register.php" method="post">
  46. <section>
  47. <label for="email">邮箱:</label>
  48. <input type="email" name="email" id="email" required autofocus />
  49. </section>
  50. <section>
  51. <label for="password">密码:</label>
  52. <input type="password" name="password" id="password" required />
  53. </section>
  54. <section>
  55. <!-- 注册与登录,使用不同的脚本进行处理,并动态设置提交类型,打开方式 -->
  56. <button
  57. type="submit"
  58. formaction="login.php"
  59. formmethod="POST"
  60. formtarget="_blank"
  61. >
  62. 登录
  63. </button>
  64. <button
  65. type="submit"
  66. formaction="register.php"
  67. formmethod="GET"
  68. formtarget="_blank"
  69. >
  70. 注册
  71. </button>
  72. </section>
  73. </form>
  74. </body>
  75. </html>
  • register.phplogin.php源码
  1. <?php
  2. // 查看表单提交的请求参数
  3. print_r($_REQUEST);

5. 下拉列表元素<select>

  • 下拉列表使用<select> + <optgroup> + <option>组合元素实现
  • 参数名name定义在<select>中,参数值value,定义在<option>

5.1 <select>属性

序号 属性 描述
1 name 请求参数名称/变量名
2 multiple 是否允许多选(布尔属性)
3 size 允许同时显示的列表项
3 disabled 是否禁用(布尔属性)

5.2 <optgroup>属性

属性 描述
label 列表分组名称

5.3 <option>属性

序号 属性 描述
1 value 请求参数的值
2 label 默认选项文本值
3 selected 是否选中(布尔属性)
3 disabled 是否禁用(布尔属性)

5.4 <select>事件属性

序号 事件属性 描述
1 onchange 当下拉列表选项值发生变化时才会触发
2 onclick 只要点击就会触发(选项值可以不改变)

5.5 示例

效果图

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>下拉列表</title>
  7. </head>
  8. <body>
  9. <form action="">
  10. <!-- 当前默认选项值是"CSS3", 点击CSS3不会触发change事件,除此之外都会触发 -->
  11. <!-- click事件不在乎当前值是否发生变化, 只要点击一定触发, 注意与change事件的区别 -->
  12. <select
  13. name=""
  14. id=""
  15. size="8"
  16. multiple
  17. onchange="alert(this.value)"
  18. onclick="alert(this.value)"
  19. >
  20. <optgroup label="前端">
  21. <option value="html5">HTML5</option>
  22. <option value="css3" selected>CSS3</option>
  23. <option value="javascript" disabled>JavaScript</option>
  24. <!-- 使用label属性,可省略选项文本,并将option转为单标签 -->
  25. <option value="es6" label="ECMScript6"> </option
  26. ><option value="jquery" label="jQuery"> </option
  27. ></optgroup>
  28. <optgroup label="后端">
  29. <option value="php" label="PHP"> </option
  30. ><option value="mysql" label="MySQL"> </option
  31. ><option value="javascript" label="Laravel"> </option
  32. ></optgroup>
  33. </select>
  34. </form>
  35. </body>
  36. </html>

6. 多行文本域元素<textarea>

6.1 常用属性

序号 属性 描述
1 cols 文本域可视宽度
2 rows 文本域可输入的行数
3 name 文本域参数名称
4 form 绑定所属表单元素
5 minlength 允许输入最小字符长度
6 maxlength 允许输入最大字符长度
7 maxlength 允许输入最大字符长度
8 placeholder 提示信息占位符
9 wrap 换行方式:hard/soft默认
10 disabled 禁用(布尔属性)
11 autofocus 自动获取焦点(布尔属性)
12 autocomplete 自动完成(布尔属性)

6.2 事件属性

序号 事件 描述
1 onclick 点击时触发
2 onchange 文本被修改时触发
3 onselect 文本被选中时触发

提示: <textarea>是双标签,没有value属性,标签内部的文本就是参数值

6.3 示例

效果图

```html
<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>文本域</title>
<style>
body {
width: 80%;
margin: auto;
display: grid;
row-gap: 15px;
}

  1. button {
  2. height: 30px;
  3. border: none;
  4. outline: none;
  5. background-color: lightseagreen;
  6. color: white;
  7. }
  8. button:hover {
  9. background-color: blueviolet;
  10. cursor: pointer;
  11. }
  12. </style>

</head>

<body>
<!-- 表单内部为空,控件全部使用form属性与之绑定 -->
<form action="" id="common"></form>
<!-- change:值改变时触发, select:选中文本时触发 -->
<textarea name="reply" id="" cols="30" rows="10" minlength="5" maxlength="50" form="common" placeholder="不超过50字符" onchange="alert('内容改变了')" onselect="this.style.color='red'" >

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post