表单是一个很重要的概念,这里涉及到收集数据以及验证数据,以及表单的用户体验。一般ui框架会有封装好的这些功能。

这里复习一下手写表单,顺带复习一下表单的基本属性,基本样式和h5的表单验证。

一个表单基本包含一个html结构,即表单结构,针对html的样式,表单验证,表单提交。这里会把前三项的相关代码贴出来。大家组合到一个html页面之中,就可以形成一个完整的功能。

表单基本结构

一般包含 label(optional), input,错误提示。错误提示的形式各式各样,有h5自带的样式,也可以自定义一个。下面举例一个包含用户名和邮箱的表单。其中用户名验证是否填写,长度在3-15字符以内,邮箱验证是否填写,是否符合邮箱类型。

<form class="form" action=""><h4>表单的功能及校验</h4><!-- text --><div class="input-block"><label for="userName" class="input-label">用户名:</label><input type="text" name="userName" id="userName" requiredminlength="3"maxlength="15"placeholder="请输入用户名"><span class="err-msg">3~15字符</span><!-- <span class="inform-msg">3~15字符</span> --></div><!-- email --><div class="input-block"><label for="mail" class="input-label">邮箱:</label><input type="email" requiredname="mail" id="mail" placeholder="请输入邮箱"><span class="err-msg"></span></div><!-- submit --><div class="button" onclick="submitData()">提交</div></form>

表单基本样式

针对以上的html,做简单的样式书写。表单整体居中,提示语在最右端显示。错误时为红色。这里简单贴一下代码。

<style>.form{text-align:center;}.form .input-block{position:relative;margin:0 auto;padding:15px 0;width:700px;}.form .input-block .input-label{display:inline-block;text-align:left;width:80px;}.form .input-block .err-msg{position:absolute;left:480px;top:17px;font-size:12px;color:#333;}.form .button{margin:0 auto;width:42px;height:20px;line-height:20px;padding:5px;text-align:center;border-radius: 5px;background:#ccc;font-size:13px;}

表单验证

h5自带了表单验证,验证后的提示信息,也有自带的,也可以自己写。这里是自己写样式,见上面。表单有一些自带的属性,如min,max,step,minLength,maxLength,type="email",type="number"....等等,都与表单验证有关系。大家可以打印出元素的validity属性,例如,在某个触发事件下,console.log(this.validity),结果是一个叫做validityState对象,如下,

针对如上表单,验证用户名及密码,效果和代码如下所示:

<script>//用户名let userName=document.getElementById('userName');userName.onblur=function(){let errMsg=document.querySelector("#userName+.err-msg");console.log(this.validity)if(this.validity.valueMissing){errMsg.display='block';errMsg.style.color="red"errMsg.innerHTML='用户名不可以为空'}else if(this.validity.tooLong){errMsg.display='block';errMsg.style.color="red"errMsg.innerHTML='用户名不可以超过15字符'}else if(this.validity.tooShort){errMsg.display='block';errMsg.style.color="red"errMsg.innerHTML='用户名不可以短过3个字符'}else{errMsg.style.color="#333"errMsg.innerHTML='3~15字符'}}//邮箱let mail=document.getElementById('mail');mail.onblur=function(){let errMsg=document.querySelector("#mail+.err-msg");if(this.validity.valueMissing){errMsg.display='block';errMsg.style.color="red"errMsg.innerHTML='邮箱不能为空喔'}else if(this.validity.typeMismatch){errMsg.display='block';errMsg.style.color="red"errMsg.innerHTML='输入无效,请输入邮箱地址'}else{errMsg.display='none';errMsg.style.color="#333"errMsg.innerHTML=''}}//表单提交function submitData(){console.log("在这里提交表单")}</script>

表单提交

这里不再贴出表单提交的代码,纯粹原生的话,需要封装一个函数,逐个获取到数据。本质上上form.elements可以获得所有的表单。可以通过element.value获得表单的值。element.checked看单/复选的选择情况,这些都是表单的共有的属性。如果是在框架中写,比如Vue中,则很容易获取到对应的变量。一般一个表单是一个变量,其下有对应的数据。验证之后,将变量提交给后台。

关于vue中的数据提交,可以见我之前写的一篇文章,大致如文中所述

https://blog.csdn.net/mia1106/article/details/79552560

注意这里使用的div提交,没有使用自带的input type="submit",注意这个提交时会自带刷新,一般需要阻止自带事件。由于现在表单基本上是异步提交,自己写提交函数,所以,我选择了自己写提交标签。

手写表单及h5表单验证举例相关推荐

  1. html 手写签名 撤销,[转]H5 canvas手写签名

    手写签名 html,body{ margin: 0; padding: 0; } .saveimg{ text-align: center; } .saveimgs span{ display: in ...

  2. mysql 手写建 表_mysql手写sql 建库建表示例

    示例1 : -- 整个项目的数据库脚本 -- 开始创建一个数据库 CREATE DATABASE seckill; -- 使用数据库 USE seckill; -- 创建秒杀库存表 CREATE TA ...

  3. C++从0到1手写一个哈希表

    C++从0到1手写一个哈希表 简易版哈希表 优化哈希表 目的:手写实现一个哈希表,采用拉链法构建,每个hash(key)对应的是一个红黑树. 看起来很简单,但可以学到很多东西.实现语言:C++. 简易 ...

  4. 【VIO笔记(学习VINS的必备基础)】第五讲(1/2) 手写VIO后端

    文章目录 非线性最小二乘问题求解:solver 单目BA代码部分 系列教程来自某学院,侵权删除. 学习完这一系列课程再去看VINS才能做到不吃力,不然直接撸网上的各种VINS解析完全云里雾里-_-! ...

  5. 大数据高频面试题——手写HQL

    目录 8.3 手写HQL 8.3.1 手写HQL 第1题 8.3.2 手写HQL 第2题 8.3.3 手写HQL 第3题 8.3.4 手写HQL 第4题 8.3.5 手写HQL 第5题 8.3.6 手 ...

  6. 这个领域有意思,认识一下MSDS手写笔迹验证数据集

    关注公众号,发现CV技术之美 手写签名是一项非常"古老"又常见的身份验证方式,尤其在金融领域,但笔迹验证这一方向的研究论文却不多,很大可能的影响因素是相关公开数据集太少. 前几天, ...

  7. 手写ORM框架----(数据库单表CRUD万能框架)

    目录 一.准备 1.1 ORM介绍 1.2 准备工作 二.手写ORM的CRUD 2.1 数据库准备 2.2 所需注解 2.3 实体类student 2.4 CRUD 2.4.1 添加功能 2.4.2 ...

  8. [H5表单]一些html5表单知识及EventUtil对象完善

    紧接着上面的文章,一开始准备一篇文章搞定,后来看到,要总结的东西还不少,干脆,把上面文章拆成两部分吧,这部分主要讲讲表单知识! 表单知识 1.Html5的autofocus属性. 有个这个属性,我们不 ...

  9. h5 php表单验证,H5表单验证失败该怎样提示

    这次给大家带来H5表单验证失败该怎样提示,怎么用H5表单验证失败的提示?H5表单验证失败提示的注意事项有哪些,下面就是实战案例,一起来看一下. 我们知道,前端的童鞋在写页面时, 都不可避免的总会踩到 ...

最新文章

  1. Redis 配置文件介绍——redis.conf
  2. 算法工程师的落地能力具体指的是什么?
  3. hdu 1075 (字典树映射)
  4. vue中 .sync 修饰符 个人理解
  5. 高并发下的接口幂等性解决方案!
  6. python简单好看的代码_Python新手写出漂亮的爬虫代码1
  7. Python学习:Python简介
  8. org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for
  9. 向下一代互联网迈进 声网发布全链路加速FPA为互联网增加QoS保障
  10. Latex 生成的PDF增加行号 左右两边
  11. .NET开发 程序员必备工具 -- Regulator:生成正则表达式工具
  12. jsp mysql模板_jsp的分页查询的代码(mysql数据库)
  13. 2022年中国商业十大热点展望:共同富裕、碳达峰碳中和、创新、数字化、新国货.........
  14. cgroup代码浅析(1)
  15. IE6 与 GZIP, BUG汇总
  16. 新手python的100个实战项目-实例分享 | 4个Python实战项目(一)
  17. 安装Python第三方库的基本方法
  18. CAD对话框不见后要如何调出
  19. spring boot 集成 Elasticsearch 5.1.1 开发
  20. 网络爬虫——爬取京东数据

热门文章

  1. 项目经理版《野狼disco》
  2. 推行国产操作系统的优劣
  3. S3C2416裸机开发系列十三_电容屏驱动实现
  4. 八段锦的运动特点及养生原理
  5. c语言 输入学生的姓名或学号 查询成绩,1、学生信息的录入。如:学生编号、学生姓名、学生成绩。 2、学生信息的查询及显示。如:按学号查询、按成...
  6. mount_nfs: can't mount /data from x.x.x.x onto /Users/caicloud/nfs1: Operation not permitted
  7. ftp文件服务器能记录操作吗,ftp服务器操作记录
  8. C#高效编程--改进C#代码的50个行之有效的办法笔记
  9. 苹果邮箱 android设置字体,如何更改Mac OS X中的邮件字体大小?
  10. Google I/O 见闻