博客列表 >表单元素与控件元素分析

表单元素与控件元素分析

我是郭富城
我是郭富城原创
2020年04月05日 02:07:151160浏览

表单元素与控件元素分析

1.作业演示站点

https://php520.vip/

2.概念

  • 表单分为表单元素与控件元素二部分
  • 表单元素仅一个: <form>
  • 表单控件元素,根据类型不同,有多个,本文要分析的就是按钮控件元素,下拉列表元素,文本域元素,表单域分组元素。

3.按钮控件元素<button>

3.1 与<input>对比

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

提示: 建议使用<button>而不要再用<input>

3.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"

3.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>

4.下拉列表元素<select>

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

4.1 <select>属性

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

4.2 <optgroup>属性

属性 描述
label 列表分组名称

4.3 <option>属性

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

4.4 <select>事件属性

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

4.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. <!-- 下拉列表使用的是select -->
  11. <!-- onchange专用于select ,当值发生变化时触发 -->
  12. <!-- onclick专用于select ,当值点击时触发-->
  13. <select
  14. name="lang"
  15. id="lang"
  16. onchange="alert(this.value)"
  17. onclick="alert('你点击了')"
  18. >
  19. <!-- option就是我们要提交啊的数据 -->
  20. <optgroup label="前端">
  21. <option value="HTML5">HTML5</option>
  22. <option value="CSS3" selected>CSS3</option>
  23. <option value="Javascript">JavaScript</option>
  24. </optgroup>
  25. <optgroup label="后端">
  26. <option value="php" label="PHP"></option>
  27. <option value="mysql" label="Mysql"></option>
  28. <option value="laravel" label="Laravel"></option>
  29. </optgroup>
  30. </select>
  31. </form>
  32. </body>
  33. </html>

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

5.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 自动完成(布尔属性)

5.2 事件属性

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

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

5.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. body {
  9. width: 80%;
  10. margin: auto;
  11. display: grid;
  12. row-gap: 15px;
  13. }
  14. button {
  15. height: 30px;
  16. border: none;
  17. outline: none;
  18. background-color: lightseagreen;
  19. color: white;
  20. }
  21. button:hover {
  22. background-color: blueviolet;
  23. cursor: pointer;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <!-- 以后开发过程中可能会用到富文本的编辑器 -->
  29. <!-- 一般通过js插件实现,但是把插件引用到当前的页面的时候还是需要用到文本域 -->
  30. <form action="" id="common"></form>
  31. <!-- name变量名 -->
  32. <!-- 文本域一样有change事件 -->
  33. <textarea
  34. name="replay"
  35. cols="30"
  36. rows="10"
  37. minlength="5"
  38. maxlength="50"
  39. form="common"
  40. placeholder="不超过50个字"
  41. onselect="this.style.color='red'"
  42. ></textarea>
  43. <!-- <input type="submit" value="提交" /> -->
  44. <!-- 现在不再这样写了 -->
  45. <button
  46. type="submit"
  47. form="common"
  48. formaction="register.php"
  49. formmethod="POST"
  50. >
  51. 提交
  52. </button>
  53. </body>
  54. </html>

6. 表单域分组元素<fieldset>

  • 当表单字段非常多时,分组管理很有必要,例如将必填项与选填项分开
  • 它只有一个子元素<legend>,设置分组标题

6.1 常用属性

序号 属性 描述
1 name 分组名称
2 form 分组所属表单,默认是最近的表单
3 disabled 禁用分组(布尔属性)

name,form属性仅供参考,提交参数仍依赖内部控件中的form属性

6.2 实例演示

  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. body {
  9. display: grid;
  10. row-gap: 15px;
  11. }
  12. fieldset {
  13. color: blueviolet;
  14. border-radius: 6px;
  15. border: 2px solid lightcoral;
  16. }
  17. fieldset:hover {
  18. display: grid;
  19. grid-template-columns: repeat(3, 1fr);
  20. column-gap: 15px;
  21. }
  22. fieldset > legend {
  23. text-align: center;
  24. }
  25. input {
  26. border: none;
  27. outline: none;
  28. border-bottom: 1px solid #666;
  29. background-color: transparent;
  30. }
  31. button {
  32. height: 30px;
  33. border: none;
  34. outline: none;
  35. border-radius: 6px;
  36. background-color: lightseagreen;
  37. color: white;
  38. }
  39. button:hover {
  40. background-color: darkgoldenrod;
  41. cursor: pointer;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <!-- 当我们遇到非常复杂的时候会需要用到 -->
  47. <!-- 比如,领导让我们设计一个调查表 -->
  48. <form action="" id="register"></form>
  49. <!-- 第一个分组,比如说用户注册 -->
  50. <!-- 自动获取焦点,一个表单一个 -->
  51. <!-- legend要和fieldset绑定 -->
  52. <fieldset name="base" form="register">
  53. <legend>基本信息</legend>
  54. <section>
  55. <input
  56. type="email"
  57. name="email"
  58. placeholder="你的邮箱"
  59. form="register"
  60. autofocus
  61. />
  62. <input
  63. type="password"
  64. name="paw1"
  65. placeholder="你的密码"
  66. form="register"
  67. />
  68. <input
  69. type="password"
  70. name="paw2"
  71. placeholder="重复密码"
  72. form="register"
  73. />
  74. </section>
  75. </fieldset>
  76. <!-- 第二个分组 -->
  77. <fieldset name="base" form="register">
  78. <legend>选填信息</legend>
  79. <section>
  80. <input
  81. type="text"
  82. name="nickname"
  83. placeholder="你的昵称"
  84. form="register"
  85. autofocus
  86. />
  87. <input
  88. type="number"
  89. name="age1"
  90. min="18"
  91. placeholder="你的年龄"
  92. form="register"
  93. />
  94. </section>
  95. </fieldset>
  96. <button
  97. type="submit"
  98. formaction="register.php"
  99. formmethod="POST"
  100. formtarget="_blank"
  101. form="register"
  102. >
  103. 提交
  104. </button>
  105. </body>
  106. </html>

7.总结

通过本节课的学习,加深了对 HTML 前端代码开发的认识,发现 HTML 不仅有趣,而且有一定的规律可循,比如代码都是通过元素的使用来告诉浏览器我想要呈现的东西是什么,只要用好了这些元素,标签,清晰他们的使用方法,各种属性,跟着老师的讲解节奏来,相信很快会有新的突破。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议