form表单那点事儿(上) 基础篇
form表单那点事儿(上) 基础篇
做为html中最为常见,应用最广泛的标签之一,form常伴随前端左右。了解更深,用的更顺。
目录:
表单属性
表单元素
常识
模拟外观
表单属性
这个表单展示了form表单常用的属性
| 属性名 | 属性值 | 描述 |
|---|---|---|
| action | 一个url地址 | 指定表单提交到的地址 |
| method | `GET` , `POST` | 表单将以此种方法提交到服务器 |
| target |
`_self` 当前页面 `_blank` 每次在新窗口打开 `blank` 每次在同一个新窗口打开 `_parent` 父级frame `_top` 顶级frame iframename 指定的iframe |
表单提交后,收到回复的页面 |
| name | - | 一个html文档中,每个form的name应该是唯一的 |
| enctype |
`application/x-www-form-urlencoded` 默认值 `multipart/form-data` 上传file用 `text/plain` html5默认 |
以 `POST` 方式提交form时的MIME类型。文件上传必须使用 `multipart/form-data` |
| autocomplete | `on` , `off` | 是否自动完成表单字段 |
| autocapitalize |
`none` 完全禁用自动首字母大写 `sentences` 自动对每句话首字母大写 `words` 自动对每个单词首字母大写 `characters` 自动大写所有的字母 |
iOS 专用属性,表单中文本域英文大小写 |
| accept-charset | 字符编码格式( `utf-8` , `gb-2312` 等) | 将会以此种编码格式提交表单到服务器,默认值是UNKONWN,即html文档所采用的编码格式。 |
| novalidate | `true` , `false` | 是否启用表单校验 |
下面举例的表单将会以 post 方式将input的值以 utf-8 编码格式提交到 /login 接口,并会打开一个新页面显示返回结果,由于 target="blank" ,所以就算提交多次该表单,都只会继续刷新之前打开的窗口。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="/login" method="post" target="blank" >
<input type="text" name='username'>
<button>提交</button>
</form>
</body>
</html>
表单元素
常见的表单元素包括 input , select , textarea , button , progress 等,这些元素都有一些自己的属性
| 属性名 | 属性值 | 描述 |
|---|---|---|
| 必须 | ||
| type |
`text` 单行文本框 `raido` 单选框 `checkbox` 多选框 `tel` 电话号码输入框 `range` 滑块取值框 ... ... 更多 |
指定input标签展示的样式,忽略type属性将默认使用 `text` |
| name | 字符串 | form提交时,该字段的key,忽略value属性的元素将不会被提交 |
| 状态 | ||
| checked | 任意值 或 忽略该属性 | 有此属性的radio和checkbox元素将被选中,同一name多个元素具有此属性的,提交时取最后一个值 |
| selected | 任意值 或 忽略该属性 | 有此属性的option元素将被选中,同一name多个元素具有此属性的,提交时取最后一个值 |
| readonly | 任意值 或 忽略该属性 | 具有该属性的表单元素将不可输入或改变状态,除非用JavaScript操作 |
| disabled | 任意值 或 忽略该属性 | 除拥有readonly的特征外,表单提交时,将忽略此字段 |
| 限制 | ||
| form | 表单id | 该元素将作为指定id表单字段被提交。用于 `button` 或 `input type='submit'` 元素时,将提交指定id的表单 示例代码 |
| accept |
`image/*` 只能上传图片 `video/*` 只能上传视频 |
`input type='file'` 使用的属性,是一个MIME类型的值,或文件后缀名。 示例代码 |
| multiple | 任意值 或 忽略该属性 | `input type='file'` 或 `select` 或 应用了 `datalist` 的表单元素才能应用该属性示例代码 |
| maxlength | 正整数或0 | 文本域可输入字符的长度,浮点数将会向下取整,负数将被忽略,JavaScript可以绕过这一限制 |
| required | 任意值 或 忽略该属性 | 该表单字段是否需要被验证 |
| pattern | 一个正则表达式 | `\d{4,6}` 形式的正则表达式,作为required校验规则 |
| autocomplete | `on` , `off` | 同form的autocomplete属性,在表单元素上应用,优先级将高于form上指定的 |
| autofocus | 任意值 或 忽略该属性 | 页面加载时,该元素自动聚焦,应用于多个表单元素时,聚焦到第一个 |
| 展示 | ||
| placeholder | 字符串 | 在元素没有value时,用于占位显示 |
| value | 字符串 或 数值 |
input 或 progress 展示的值,其中: checkbox和radio的默认值是 'on' range和progress的默认值是 0 progress的是0的时候会播放循环动画 示例代码 |
注意:以下示例部分来自 w3.org
form示例
点击预览按钮,将会把 username1 的值提交到 /preview,
点击发布按钮,将会把 username 的值提交给 /publish
预览
发布
<form action="/preview" name='preview' id='preview'></form>
<form action="/publish" name='publish' id='publish'>
<input type="text" name='username' value='1'>
<input type="text" form='preview' name='username1' value='2'>
<button form='preview'>预览</button>
<button>发布</button>
</form>
accept示例
<input type="file" accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">
multiple示例
需要键入 ',' 方可多选(需浏览器支持)
Cc:
````html
Cc:
````
.
需要一直按下ctrl键才可多选
中国
美国
英国
````html
中国
美国
英国
````
.
直接框选多文件即可
<input type="file" multiple>
value示例
<progress value='70' max='100'></progress>
<input type="range" value='40' max='100'>
<input type="text" value='hello world'>
常识
下面是对于上面表格的一些总结,也加入了一些新的知识点
- 没有
name和有disable的字段不会被提交 - 同一个表单中,相同name的字段值会发生覆盖,
radio和checkbox除外 - 在低版本浏览器中,name可以作为id使用
- 忽略或使用浏览器不支持的
type会转为type=text - 低版本浏览器不支持动态改变
type - 点击
button会默认提交表单 - 低版本浏览器需要指定
button的type=submit才会提交表单 - 文本域的光标颜色由字体颜色决定
- form表单不能互相嵌套
- 表单元素可以不在表单的html结构内 示例代码
- 在表单最后一个input元素中敲回车,会触发表单提交
模拟外观
有一千种浏览器,就有一千种表单元素外观。在以前,要想改变表单元素外观,需要通过其他标签来模拟。
而在现代浏览器上,通过css3的appearance属性( 兼容情况 )指定元素的渲染风格,
再结合:after,:before伪元素,可以做出很酷炫的表单元素外观。
作为可替换元素,input标签无法使用伪元素。当然这只是W3标准。以下点到名的表单元素,还是可以照常使用:after,:before的。
input type='radio' , input type='checkbox' , input type='file' , input type='range' , button , progress.
appearance是css3的标准属性,面对现实,很多时候还是需要加上-webkit- ,-moz- 前缀,举一个把checkbox做成开关的例子:
<style>
input[type='checkbox'] {
-webkit-appearance: none;
padding: 9px;
border-radius: 50px;
display: inline-block;
position: relative;
outline: 0;
-webkit-transition: all 0.1s ease-in;
transition: all 0.1s ease-in;
width: 70px;
height: 33px;
}
input[type='checkbox']:before,
input[type='checkbox']:after {
position: absolute;
content: '';
border-radius: 100px;
-webkit-transition: all 0.1s ease-in;
transition: all 0.1s ease-in;
}
input[type='checkbox']:before {
background: white;
top: 1px;
left: 1px;
z-index: 2;
width: 31px;
height: 31px;
box-shadow: 0 3px 1px rgba(0, 0, 0, 0.05), 0 0px 1px rgba(0, 0, 0, 0.3);
}
input[type='checkbox']:after {
content: 'OFF';
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: inset 0 0 0 0 #eee, 0 0 1px rgba(0, 0, 0, 0.4);
line-height: 34px;
font-size: 14px;
background: #eee;
color: #ccc;
text-indent: 35px;
box-sizing: border-box;
box-shadow: 0 0 1px #eee;
}
input[type='checkbox']:checked:before {
left: 37px;
}
input[type='checkbox']:checked:after {
content: 'ON';
color: #fff;
text-indent: 10px;
background: #4cda60;
}
</style>
<input type="checkbox">
不出意外,长成这样
,
示例代码来自10个HTML5美化版复选框和单选框
参考资料
form表单那点事儿(上) 基础篇的更多相关文章
- form表单那点事儿(下) 进阶篇
form表单那点事儿(下) 进阶篇 上一篇主要温习了一下form表单的属性和表单元素,这一片主要讲解用JavaScript如何操作form. 目录: 表单操作 取值 赋值 重置 校验 提交 技巧 不提 ...
- JavaScript实现form表单的多文件上传
form表单的多文件上传,具体内容如下 formData对象可以使用一系列的键值对来模拟一个完整的表单,然后使用Ajax来发送这个表单 使用<form>表单初始化FormData对象的方式 ...
- [Nginx 2] form表单提交,图片上传
导读:昨晚恶补了一些Nginx服务器的东西,从整体上对Nginx有一个初步的了解.上午去找师哥问了问目前项目中的使用情况,然后就开始上传图片了.这里就简单总结整理一下今天的成果,以后接着提升.简单粗暴 ...
- form表单系列中文件上传及预览
文件上传及预览 Form提交 Ajax 上传文件 时机: 如果发送的[文件]:->iframe, jQurey(),伪Ajax 预览 import os img_path = os.path.j ...
- Django框架form表单的那些事儿
Form那些事儿 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; 1:initial 初始值,input框里面的初始值. class L ...
- iframe和form表单实现ajax请求上传数据
form的target属性设置为iframe的name值时,表示提交到url后返回的数据显示到iframe区域 <form action="/upload.html" met ...
- jquery 序列化form表单
1.为什么要将form表单序列化? ajax上传form表单的原始方式,是将form表单中所需要的键值对先获取,然后再组装成数据(两种方式:http:localhost:8080/test.do?pe ...
- 获取html 中的内容 将前台的数据获取到后台 用 jquery 生成一个 form表单 提交数据
使用js创建一个form表单 ,使用post上传到后台中 下面是代码.在获取html内容的时候使用了js节点来获取内容. parent:父节点.上一级的节点 siblings:兄弟节点.同一级别的节点 ...
- 深入了解Element Form表单动态验证问题 转载
随风丶逆风 2020-04-03 15:36:41 2208 收藏 3 分类专栏: Vue 随笔 文章标签: 动态验证 el-form elementUI 表单验证 版权 在上一篇<vue ...
随机推荐
- [CareerCup] 5.6 Swap Odd and Even Bits 交换奇偶位
5.6 Write a program to swap odd and even bits in an integer with as few instructions as possible (e. ...
- 使用mobile.changePage()时出现的问题(转)
使用mobile.changePage()页面跳转,当跳转到目标页面时,目标页面中的初始化js如$().ready()及其他引入的js都无法执 行,重新刷新页面后才会执行.想到changePage() ...
- 20145208《Java程序设计》第2周学习总结
2015208 <Java程序设计>第2周学习总结 教材学习内容总结 本章内容主要讲了类型.变量与运算符的一些知识,也讲了一些基本的流程语法. 类型 基本类型 整数:short整数(占2字 ...
- JS判断输入是否为整数和数字的正则表达式
"^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\\d+)|(0+))$" ...
- 使用Let’s Encrypt轻松配置https站点
使用Let's Encrypt轻松配置https站点 https不仅能提高网站安全,更是被搜索引擎纳入排名的因素之一. 2015年10月份,微博上偶然看到Let's Encrypt 推出了beta版, ...
- 阿里客户端工程师试题简析——Android应用的闪退(crash)分析
1. 问题描述 闪退(Crash)是客户端程序在运行时遭遇无法处理的异常或错误时而退出应用程序的表现,请从crash发生的原因分类与解决方法.在出现crash后如何捕捉并分析异常这两个问题给出自己的解 ...
- EF实体框架之CodeFirst五
上一博客学习了下基本的约定配置,留下几个遗漏的,这篇就是学习下遗漏一复杂类型. 一.什么是复杂类型? 书中说道:“复杂类型也可视作值类型(?)可以作为附加属性添加到其他类.复杂类型与实体类型的区别在于 ...
- JavaScript事件---事件入门
内容提纲: 1.事件介绍 2.内联模型 3.脚本模型 4.事件处理函数 JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击.当用户执行某些操作的时候,再去执行一系列代码. ...
- angular的工具方法笔记(equals, HashKey)
分别是angular脏值检测的工具方法equals和 类HashKey的使用方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...
- 今天学习到的关于mysql数据库的linux命令
1. 登录mysql数据库: mysql -uroot -p 2.安装会提示的mysql的数据库软件:mycli sudo apt-get install mycli 3.安装依赖包: sudo ap ...