HTML除了常用的标签需要掌握之外,还有一部分是必须掌握的知识点 ---表单 本篇笔记介绍表单的基础
学习视频:https://www.bilibili.com/video/BV16K4y1Z7Gb
学习书籍:《Head First HTML 与 CSS》
Q:什么是表单?
Q:表单在浏览器中是如何工作的
Q:如何创建表单?
- <form action="https://www.baidu.com">
-
-
- 用户名<input type="text" name="usr"/><br>
- 密码<input type="password" name="pwd"/><br>
- <input type="submit" value="登录"/>
- form>
Q:Form表单的method属性
method属性指定提交表单的方式,目前有两种 get和post
get:也会打包表单变量,但是会把这些数据追加到url的最后,然后向服务器发送一个请求,数据对于用户来说是可见的,会把用户提交的信息会显示在浏览器的地址栏上
post:采用post方式提交,打包表单变量,在后台把它们发送给服务器,数据对于用户来说是不可见的,提交的信息不会显示在浏览器的地址栏上
当用户提交的信息中有敏感信息时,比如密码,建议采用post的方式提交
method不指定时,默认为get请求
post提交的时候和get提交的数据是一样的,只是在地址栏中不显示
不同情况选择不同的提交方式:
get:适用于用户能够对提交表单后的结果页面加书签;
post:适用于表单里的数据是私有的; 如果使用textarea 就应该使用post,因为可能会发送大量数据
Q:Input的多种类型
<input type="text" name="fullname">
<input type="submit">
- <input type="radio" name="hotpot" value="first">
- <input type="radio" name="hotpot" value="second">
checkbox:复选框; 相关的复选框也应该使用相同的名字; 每个复选框有不同的值; checked 属性来指定该选项的值是选中的
- <input type="checkbox" name="spice" value="jiu" checked>
- <input type="checkbox" name="spice" value="jiu">
<input type="number" min="0" max="12">
<input type="range" min="0" max="12" step="2">
Q:input等于file的时候,必须加一个属性enctype
- <form action="" enctype="multipart/form-data">
- <input type="file"/>
- <input type="submit"/>
- form>
Q:文本框中,输入一个字符,会联想到之前的输入?
给表单设置 autocomplete="on"
<form action="" enctype="multipart/form-data" autocomplete="on">
Q:初始化页面之后,如何让input自动获得焦点
将input元素属性设置为autofocus
<input type="text" name="usr" placeholder="请输入用户名" required autofocus/>
Q:HTML5如何设置表单元素必填
将元素属性设置为required
Q:HTML5表单验证如何使用正则表达式
pattern属性
<input type="text" name="gonghao" placeholder="请输入工号" pattern="^\d{5}[abc]" />
Q:HTML5表单验证中设置了必填,提交表单的时候如何做到不验证
(1)表单增加novalidate,提交的时候不会去验证,会直接提交表单
(2)提交按钮增加formnovalidate
<form action="" enctype="multipart/form-data" autocomplete="on" novalidate>
<input type="submit" name="" formnovalidate>
Q:label for的用法
主要用于radio 或者 checkbox
注意点:for后面是按钮的id
作用:点击label,会选中后面的按钮
- <label for="man">男label>
- <input type="radio" name="sex" id="man" required>
- <label for="woman">女label>
- <input type="radio" name="sex" id="woman" required>
Q:HTML5约束验证API
validity 表示元素当前所处的验证状态,验证是否成功
validationMessage : 描述与元素相关约束的失败信息
checkValidity(): 查看元素有没有满足任意约束, 如果元素没有满足它的任意约束,返回false,其他情况返回true
setCustomValidity(): 设置自定义验证信息,用于即将实施与验证的约束来覆盖预定义的信息
Q:其他知识点
<input type="hidden" name="userid" value="111"/>
Q:id和name属性的区别
Q:div和span是什么,有什么用
Q:validity属性
Q:input的type为num时,maxLength不起作用,怎么处理
- <body>
- <input type="number" id="numbers" step="5" oninput="checkLength(this, 5)">
-
- <script>
- // 限制只能输入固定长度
- function checkLength(obj, length){
- if(obj.value>length){
- obj.value=obj.value.substr(0, length);
- }
- }
- script>
- body>
Q:input的type为num时,想要去掉后面的上下箭头怎么处理
- input[type=number]::-webkit-inner-spin-button,
- input[type=number]::-webkit-outer-spin-button{
- -webkit-appearance: none;
- margin: 0
- }
Q:checkValidity()方法
检查输入的样式是否符合
Q:setCustomValidity()
设置自定义验证提示信息
<input type="text" required pattern="^\d{5}$" oninput="checkit(this)" />
- function checkit(obj){
- console.log(obj.validity);
- var it=obj.validity;
- if(true === it.valueMissing){
- obj.setCustomValidity("不能为空");
- }else{
- if(true === it.patternMismatch){
- obj.setCustomValidity("必须是5个数字");
- }else{
- obj.setCustomValidity("");
- }
- }
- }