概述

  form 是块级双标签,用于指定一个表单区域,并向服务器提交信息。

属性

常用属性

  • action:指定表单提交的URL,表单内提交按钮的formaction属性会覆盖此属性
  • enctype:指定表单的数据编码方式,表单内提交按钮的formenctype属性会覆盖此属性
  • method:指定表单的请求方式,表单内提交按钮的formmethod属性会覆盖此属性。另外若表单在dialog元素中,指定methoddialog将在提交时关闭模态框,详细参考
  • target:表示表单提交时于何处响应,表单内提交按钮的formtarget属性会覆盖此属性
  • novalidate:指定后表单提交时不用验证数据,表单内提交按钮的formnovalidate属性会覆盖此属性,关于表单内提交按钮覆盖情况,详细参考

accept

  指定表单内的上传控件可接受的文件类型(MIME 类型),可指定多个。注意几乎所有的浏览器都不支持,此属性已在HTML5中被移除不再使用,替代方式则是上传控件单独指定accept属性。

<form action="" method="post" accept="image/png, image/gif"><input type="file"><button type="submit">提交</button>
</form>

  如下为模拟呈现。

accept-charset

  规定服务器以何种字符集处理表单数据,浏览器中每种内容类型的默认值通常是正确的,所以一般不用设置。

  常用值包括如下。

  • UTF-8unicode字符编码
  • ISO-8859-1 :拉丁字母表的字符编码
  • gb2312:简体中文字符集
<form action="" method="post" accept-charset="UTF-8, ISO-8859-1">...
</form>

autocapitalize

  Safari浏览器独有的非标准属性,在表单的后代控件中,输入文本时,此属性可控制文本值的首字母是否大写等其它样式。

  可选值包括如下。

  • none:禁用首字母大写
  • sentences:对每句文本首字母大写
  • words:每个单词首字母大写
  • characters:大写所有字母
<form action="" method="post" autocapitalize="words">...
</form>

autocomplete

  输入框是否自动补全,默认值为on(启用自动补全),off(禁用)。

<form action="" method="post" autocomplete="on"><input type="text" name="username"><br><button type="submit">提交</button>
</form>

  注意输入控件需指定name属性,浏览器会根据此属性,查找出此属性之前输入并提交过的值。若不指定name属性,此属性将不生效。

方法

checkValidity

  用于返回表单或者表单元素是否验证通过,返回值为布尔值。

  绝大多数浏览器支持,IE9及以下浏览器不支持。

<form action=""><input type="input" required><button type="button">提交</button>
</form>
<script>const form = document.querySelector('form')const input = document.querySelector('input')const btn = document.querySelector('button')btn.addEventListener('click', () => {console.log('input:', form.checkValidity())console.log('form:', form.checkValidity())})
</script>

reportValidity

  验证表单或者表单元素并且触发浏览器的内置验证提示交互,返回值为布尔值,IE11及以下浏览器不支持。

<form action=""><input type="input" required><button type="button">提交</button>
</form>
<script>const form = document.querySelector('form')const btn = document.querySelector('button')btn.addEventListener('click', function () {console.log('form:', form.reportValidity())})
</script>

setCustomValidity

  自定义表单元素的提示文字,IE9及以下浏览器不支持。

const input = document.querySelector('input')input.setCustomValidity('请输入文字')

属性

validity

  返回表单元素的各种验证状态,返回结果为 ValidityState 对象。

  IE9及以下浏览器不支持。

  如下为Chrome浏览器包含的只读属性和属性值。

const input = document.querySelector('input')console.log(input.validity)

  • badInput:输入框的值浏览器无法转换。例如number类型输入框输入3.14-2,此时返回true,注意IE浏览器不支持此属性
  • customError:元素是否调用setCustomValidity方法自定义验证规则
  • patternMismatch:输入框的值与指定的pattern正则不匹配返回true(可用:invalid伪类修改样式),否则为false
input {outline: none;
}input:valid {border: 1px solid #409eff;
}input:invalid {border: 1px solid #f56c6c;
}<form><input type="text" pattern="[a-z]{5}" /><br><button type="button">提交</button>
</form>
<script>const input = document.querySelector('input')const btn = document.querySelector('button')btn.addEventListener('click', () => {console.log('patternMismatch:', input.validity.patternMismatch)})
</script>

  如下为配合:invalid伪类实现的输入验证。

  • rangeOverflow:与元素max属性规定的最大值比较,超过返回true,否则为false。例如number类型输入框的属性max="5",输入值为8则返回true(可用:out-of-range:invalid伪类修改样式)
  • rangeUnderflow:与元素min属性规定的最小值比较,小于返回true,否则为false,为true时也可用:out-of-range:invalid伪类修改样式
  • stepMismatch:输入框的值与step属性值不匹配时返回true,或者说输入框的值无法整除step。例如number类型输入框的属性step="30",输入值为-60-3003060等均返回false,而非30倍数均返回true(也可用:invalid伪类修改样式 )
  • tooLong:输入内容长度大于元素maxlength时返回true,否则为false,为true时也可用:invalid伪类修改样式
input:invalid {outline: none;border: 1px solid #f56c6c;
}<input type="text" maxlength="5" />

  • tooShort:输入内容长度小于元素minlength时返回true,否则为false,为true时也可用:invalid伪类修改样式,注意IE浏览器不支持此属性
  • typeMismatch:输入框的值与元素type要求的值不匹配时返回true,否则为false。例如email类型输入框输入非email格式,此时返回true(也可用:invalid伪类修改样式)
  • valid:当前元素是否完全验证通过,通过返回true,否则为false。例如email类型输入框的属性minlength="20",输入值为email@email.com时返回false(可用:invalid伪类修改样式)
  • valueMissing:若元素含required属性且输入框值为空,则返回true,否则为false(可用:invalid伪类修改样式)

validationMessage

  表示当前输入框将要显示的出错提示,只读属性。

<form><input type="email" required minlength="10" /><button type="button">提交</button>
</form>
<script>const input = document.querySelector('input')const btn = document.querySelector('button')btn.addEventListener('click', () => {console.log('input:', input.value, ', validationMessage:', input.validationMessage)})
</script>

willValidate

  当前元素是否在提交前进行验证,只读属性,需要验证返回true,否则为false

  若元素含disabled属性,则此属性返回false,即提交前无需验证此元素。

其它

阻止 form 默认提交行为

  表单内submit按钮单击时会触发表单默认行为,若form指定了action属性,将提交表单数据(FormData 格式)并跳转至action页面,未指定将跳转至当前页面,造成页面刷新。

<form action="" method="POST"><input type="text" name="username"><input type="text" name="password"><button type="submit">提交</button>
</form>

修改按钮类型

  可修改按钮类型为button

<button type="button">提交</button>

  或者使用input标签的按钮。

<input type="button" value="提交">

阻止按钮点击事件

  addEventListener绑定的事件,阻止默认行为。

<button type="submit">提交</button>const btn = document.querySelector('button')btn.addEventListener('click', event => {event.preventDefault()
})

  onclick绑定的事件,阻止默认行为。

<button type="submit" onclick="handler(event)">提交</button>function handler(event) {event.preventDefault()
}

onclick 返回值方式

  其中onclick="return true"为默认的表单提交事件,onclick="return false"为阻止表单提交事件。

<button type="submit" onclick="return false">提交</button>

  若阻止表单默认提交行为同时,又要保留点击事件,可用return function()返回函数的方式,注意函数末尾一定要返回false

<button type="submit" onclick="return handler(event)">提交</button>function handler(event) {...return false
}

  更进一步的,可在表单提交之前做一些数据处理,最后再return true触发表单提交。

<button type="submit" onclick="return handler(event)">提交</button>function handler(event) {...return true
}

阻止表单 submit 事件

  addEventListener绑定的事件,阻止submit事件。

<form action="" method="POST">...
</form>const form = document.querySelector('form')form.addEventListener('submit', event => {event.preventDefault()
})

  onclick绑定的事件,阻止submit事件。

<form action="" method="POST" onsubmit="handler(event)">...
</form>function handler(event) {event.preventDefault()
}

onsubmit 返回值方式

  此方式同上述onclick返回值方式基本一致,不再详细描述。

<form action="" method="POST" onsubmit="return handler(event)">...
</form>function handler(event){...return true | false
}

HTML5 之 Form 标签相关推荐

  1. 【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放

    导航 [初探HTML5之使用新标签布局]用html5布局我的博客页! [HTML5初探之form标签]解放表单验证.增加文件上传.集成拖放 [HTML5初探之绘制图像(上)]看我canvas元素引领下 ...

  2. HTML form 标签的 method 属性

    2019独角兽企业重金招聘Python工程师标准>>> 实例 在下面的例子中,表单数据将通过 method 属性附加到 URL 上: <form action="fo ...

  3. a jquery 标签点击不跳转_form标签的action属性怎么用?form标签action属性的用法介绍(附实例)...

    本篇文章主要的介绍了关于HTML中form标签action属性的用法介绍和实例,还有关于form标签的action属性的定义和语法介绍,最后徐还有关于form标签的action属性的作用解释.现在让我 ...

  4. php 编辑器 插入视频,苗景云的博客-PHPCMS V9编辑器中新增上传mp4视频(上传视频并插入HTML5的video标签)的功能...

    由于PHPCMS v9默认的编辑器中上传的视频插入的是embed标签使用的是flash播放器,手机端无法播放,所以来改造下,让其上传视频并插入HTML5的video标签,这样电脑端的主流浏览器和手机端 ...

  5. 前端笔记(Html+CSS+JS+DOM+网页特效+jQuery+HTML5+CSS3+canvas 标签+web开发重难点+面向对象+AJAX)

    第1章Html Html:超级文本标记语言(HyperText Markup Language),在浏览器上运行的一种标记语言. 就是给文本加上含有语义的标签. 接下来应该学习更多具体语义标签: 一. ...

  6. HTML5常用基础标签

    HTML5中的标签众多,有时新手刚入门前端很容易步入误区,即想要一把抓掌握所有的知识,其实全部掌握效果不尽人意,相反会让我们学习受挫,效率低下,因此"片面"的学习有助于我们提高学习 ...

  7. action请求是什么意思_html form标签的action属性是什么意思?又有哪些用法?(附实例)

    本篇文章主要的介绍HTML form表单标签的action属性的用法,用法介绍和实例等都在里面,现在让我们一起来看吧 首先我们先来介绍一下关于HTML form标签的action属性的意思: form ...

  8. HTML5新增的标签属性以及它们的用法

    HTML5新增了一些标签,但它们并不像我们想象的那样陌生,它们只是更加符合我们的思维方式,更人性化.按照以往的布局方式,我们要划分页面结构时都是使用的div,例如<div class=" ...

  9. 去除html标签 linux,HTML5新增的标签和废除的标签

    HTML5新增的结构标签 section元素 表示页面中的一个内容区块,比如章节.页眉.页脚或页面的其他部分.可以和h1. h2--等元素结合起来使用,表示文档结构.例:HTML5中--;HTML4中 ...

最新文章

  1. Fiddler的学习
  2. 简单工厂模式(详细)(举例饮料)
  3. Java Stub 研究学习(2)
  4. 27 SD配置-主数据-信用管理-定义风险类别
  5. XX公司定制开发的仓库管理系统
  6. Ansible详解(七)——Ansible palybook简单使用
  7. Newtonsoft.Json.Compact
  8. python运行需要网络吗_python邮件和网络的简单使用
  9. flink不等于符号问题
  10. linux下unison安装配置
  11. 个人运营app需要多少钱【费用】
  12. python expend_Python序列化proto中repeated修饰的数据
  13. Java设计原则——依赖倒转原则
  14. 无人驾驶车辆纵向速度PID控制
  15. 物流matlab,物流配送线路优化Matlab算法研究
  16. Vue和layUI的区别何在?
  17. CSS——制作三角形
  18. IO模块软件处理方案
  19. ERP出库审核业务(四十四)
  20. Python oauth2登录Outlook读取邮件

热门文章

  1. 数据库Java项目:在线租房出租房屋系统(java+springboot+maven+mysql)
  2. c语言用随机投点法计算圆周率,(原创精品)用随机投点法计算π值【compute π with dartpoint randomly】...
  3. HDU 6441Find Integer
  4. 杨明 南京师范大学计算机学院,陈松灿教授、杨明教授、耿新教授应邀来我校做学术报告...
  5. 第四周:基于图像相似度比较的分镜头
  6. Mybatis Plus 多租户架构(Multi-tenancy)实现
  7. JS 超大文件上传解决方案:分片断点上传(一)
  8. 深度学习端到端的优缺点和网络泛化性
  9. 雅居乐万豪酒店java_“万豪,我心所属之地” | 上海雅居乐万豪酒店Terence Sun的实习故事...
  10. 多用途数据主导“物联网未来”的实施