HTML-表单

HTML-表单


前面的HTML学习都没有写什么笔记,但这一章感觉比较重要,主要是实现了网页的交互,表单发送数据也与后端有所关联,再加上知识点比较多而复杂,所以写一篇笔记以加深印象。

<form>

作用

整个表单的结构基础

属性

有两个最为重要的属性:actionmethod

其中 action 控制表单的数据提交到哪里,一般指向后端接口地址。

method 控制表单的提交方式,常用值有 GET \ POST ,默认值为 GET ,平时需要注意 GET 是以明文方式提交的,安全性较差。

<label>

作用

\cdot 可点击放大区,点击文字( label 中的内容)就可以选中对应的输入框。增加输入友好度。

\cdot 无障碍访问:有助于屏幕阅读器用户使用。

\cdot 使代码语义更清晰,确定了这些文字是给哪个输入框当标题的。

使用方法

和控件元素一对一绑定,如:

<label for="nickname">昵称:</label>
<input type="text" id="nickname" name="nick">

label 中填写对当前表单控件的描述,即用户应当输入什么。

属性

for: 与对应控件元素的 id 属性相对应,是 “点击label文字=点击控件” 功能的核心,同时也有助于无障碍性的提升。显式关联了 label 和控件元素。

以及 style 等样式元素,不多介绍。

<input>

作用

表单的核心功能,表示用户的输入数据项。

使用方法

独立元素

<input type="text" name="name" id="name" />

属性

type: 表单控件类型,常用类型如下:

type 值外观/功能典型场景移动端键盘优化自动校验
text普通单行文本姓名、用户名正常键盘
password密码(小圆点)登录、注册正常
email邮箱输入注册、找回密码邮箱键盘有@和.
tel电话号码手机号数字键盘
number数字(可点上下箭头)年龄、数量数字键盘数字
date日期选择器生日、入职日期日期滚轮格式
datetime-local日期+时间预约、活动时间
month / week只选月 / 周账单周期
time只选时间上课时间
url网址个人网站网址键盘必须http/https
search搜索框(小叉×)站内搜索搜索键盘
checkbox多选框兴趣爱好、权限
radio单选框(必须同name)性别、支付方式
file文件上传头像、简历
color颜色选择器主题色、设计工具
range滑块音量、评分
hidden隐藏域(用户看不见)传用户ID、token

name: 为该数据项指定一个名称。当表单提交时,数据会以名值对的形式提交,如在

<input type="text" name="email" />

中填入 example@gmail.com 时,提交数据时就会以 email=example%40gmail.com 的形式提交。

id: 指定一个用于标识该元素的ID。在这里用于将表单控件与对应的 <label> 标签关联起来。

required: 表示该表单控件在提交前必须填写。

value: 初始值,可用于表示某个数据项的默认值。

placeholder: 提示文字。

maxlength / minlength: 字符长度限制。

patern: 正则校验(自定义规则)

autocomplete: 浏览器自动填充

disabled: 禁用

readonly: 只读(readonly提交value,disabled不提交)

min / max / step: 数值 / 日期范围限制

multiple: 多选

accept: 文件类型过滤

checked: 默认选中

form: 关联 form (即使不在 form 里)

list: 关联 <datalist> 提供建议

autofocus: 页面加载自动聚焦

<button>

作用

<button> 元素被放在 <form> 元素中时,它具有默认行为:提交表单。

属性

type: 在这里只讲和表单相关的属性,包括 submit (提交表单,默认),reset (重置表单),button (纯JS触发,用于弹窗、切换TAB等)

name: 提交时的字段名(用于多提交按钮区分)

value: 提交的值(name有值时生效)

form: 关联 form 的id,button 不在 form 中也能提交。

formaction: 覆盖 formaction (用于提交到别的URL等)

formmethod: 同理,覆盖 formmethod 值。

formenctype: 覆盖 enctypemultipant / formdata 等)

formnovalidate: 提交时跳过HTML5校验。

formtarget: 覆盖 target (_blank等)

<textarea>

作用

多行文本输入,可以让用户输入长文本(简介、留言、评论、简历等)

可以实现回车、多行、resize拖拽。

<select> + <option> + <optgroup>

作用

下拉选择框

使用方法

示例:

<select name="major" required>
    <option value="" disabled selected>请选择你的专业</option>
    <optgroup label="计算机类">
        <option value="cs">计算机科学与技术</option>
        <option value="se">软件工程</option>
    </optgroup>
    <optgroup label="其他">
        <option value="math">数学</option>
    </optgroup>
</select>

<select name="skills[]" multiple size="5">
  <option value="html">HTML</option>
  <option value="css">CSS</option>
  <option value="js">JavaScript</option>
</select>

<fieldset> + <legend>

作用

将表单切分为逻辑块(个人信息、地址、支付方式等)

<legend> 是分组标题

使用方法

示例:

<fieldset>
    <legend>个人信息</legend>
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name">
    <!-- 其他输入 -->
</fieldset>

<fieldset disabled>
    <legend>管理员专区</legend>
    <!-- ... -->
</fieldset>

<datalist>

作用

text 输入提供下拉的建议,用户可自定义输入,通过 list 属性关联 datalistid

使用方法

示例:

<input type="text" list="framworks" placeholder="输入前端框架">
<datalist id="framworks">
    <option value="React"></option>
    <option value="Vue"></option>
    <option value="Svelte"></option>
    <option value="Angular"></option>
</datalist>
🐙