JavaScript总结(八)
表单验证
表单验证是JavaScript最常用、最有用的功能之一。在表单内容提交之前进行验证,可以降低服务器处理器的压力,缩短用户等待的时间。表单校验中第一个要考虑的问题是:什么时候捕获表单的录入错误?在错误发生之前、在错误发生时、在错误发生之后;
♞ 使用submit事件在错误发生之后捕获错误
表单数据输入完毕后,通过点击提交按钮和submit()方法把数据发送到由表单的action属性指定的表单处理程序进行处理。为了防止无效数据进入服务器端,我们有在submit事件发送之后,表单数据提交到表单处理程序之前,验证表单中输入的数据的有效性,即把校验代码写在submit()事件的事件处理程序中。如果一个控件包含了无效数据,就显示一条信息,并且通过处理程序返回false值来取消提交,如果数据有效,处理程序返回true值,正常提交表单数据。
♞ 使用change事件在错误发生时捕获错误
可以在用户输完每项数据后,马上进行校验;当修改一个控件,并失去焦点时,会触发change事件,我们就可以在change事件处理程序中,写入校验码,如果数据无效,显示一条信息提醒用户,并且通过处理程序返回false值来阻止表单的提交。
♞ 使用keypress事件在错误发生之前捕获错误
如何在开始就阻止错误的发生?可以通过在键入数据的时候,即keypress事件发生时,限制数据的类型来实现,这样就可以在错误发生时捕获并阻止。
✍ 表单校验最佳实践
➣ 必须对用户有帮助——客户端校验必须用于帮助用户正确输入数据,因此,它必须以有帮助的方式与用户交互。例如用户输入一个无效数据,可以在错误信息中包含正确的数据格式。同样可以使用脚本来纠正一般的错误,例如:使用JavaScript自动格式化;
➣ 不要让人讨厌——我们使用alert()来提示用户输入无效是为了演示,但是在用户可以校验数据之前,alert()窗口必须关闭,因为用户也许会忘记到底是哪个控件出错。所以最好考虑在页面本身的某个地方显示错误信息;
➣ 只要有可能,就用HTML功能代替JavaScript——比如说使用控件的maxlength属性校验控件长度,比使用JavaScript校验好;提供一个可能的日期的下拉列表以避免无效输入,来替代日期检查等等;
➣ 早点捕获错误——一直等到提交不是捕获错误的最佳事件,可以选择在错误发生时或者发生之前对错误进行捕获。如果要使用blur和focus触发器,必须管理事件,包括消除事件冒泡;
➣ 如果拿不准,就不要太严格——JavaScript表单校验是用于帮助用户发现错误的,而不是一种强制政策;
JavaScript总结(八)的更多相关文章
- JavaScript常用八种继承方案
更新:在常用七种继承方案的基础之上增加了ES6的类继承,所以现在变成八种啦,欢迎加高级前端进阶群一起学习(文末). --- 2018.10.30 1.原型链继承 构造函数.原型和实例之间的关系:每个构 ...
- JavaScript(八)——复习一(重要内容基本包含在内)
一.常用对话框 1.alert(""):警告对话框,作用是弹出一个警告对话框 2.confirm(""):确定对话框,弹出一个带确定和取消按钮的对话框——确定返 ...
- javascript继承(八)-封装
这个系列主要探讨的是javascript面向对象的编程,前面已经着重介绍了一下js的继承,下面想简单的说一下js如何实现封装的特性. 我们知道面向对象的语言实现封装是把成员变量和方法用一个类包围起来, ...
- javascript (八) 语法格式
JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getEle ...
- JavaScript进阶(八)JS实现图片预览并导入服务器功能
JS实现导入文件功能 赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉!(PS:此篇博文是自己在午饭时间所写,为此没吃午饭,这就是程序猿 ...
- 学习 JavaScript (八) 引用类型之 Object
在JavaScript中,引用类型是一种数据结构.包括对象(Obejct).数组(Array).日期(Date).正则表达式(RegExp).函数(Function).基本包装类型(new Boole ...
- JavaScript(八)
闭包 什么是闭包 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回 function aaa(a){ var b = 5; function bbb(){ a++; ...
- 前端笔记之JavaScript(八)关于元素&计算后的样式
一.获取元素方法(JS选择器) 1.1概述 得到id元素的方法 document.getElementById() 得到一个元素.事实上,还有一个方法可以得到标签元素,并且得到的是多个元素: docu ...
- 深入浅出javascript(八)this、call和apply
_________此篇日志属于重要记录,长期更新__________ this,call,apply这三个是进阶JS的重要一步,需要详细的记录. ➢ this 一.作为对象的方法调用. 当函数作为对象 ...
- 你不知道的JavaScript(八)逻辑运算
JS的逻辑运算结果和其他一些强类型语言差别比较大,也比较容易让人产生困惑,看下面的例子: <script type="text/javascript"> var a = ...
随机推荐
- [WSUS] [Windows 10 Upgrade 1607/1703] 升级出错,出现 0xC1800118 或者卡在下载中…… 0%后失败
1. 安装 KB3159706 ,并进行安装后维护操作:https://support.microsoft.com/en-us/help/3159706/update-enables-esd-decr ...
- pt1000测温度
本设计使用的PT1000热电阻铂热电阻,它的阻值会随着温度的变化而改变.PT后的1000即表示它在0℃时阻值为1000欧姆,在300℃时它的阻值约为2120.515欧姆.它的工业原理:当PT1000在 ...
- matlab规定小数点保留4位且非科学计数法格式存储txt
matlab 不保存为科学计数法 http://blog.sciencenet.cn/blog-472136-402727.html 经常在表示matlab值时,它总会把一些小于1的大于1000的数使 ...
- November 27th 2016 Week 48th Sunday
It is never too late to be what you might have been. 勇敢做自己,永远不嫌迟. What I might have been? Experienci ...
- 汉诺塔问题php解决
面向过程解决 <?php function hanio($n,$x,$y,$z){//把n个盘子,按照要求从x移到z,y是中介 //递归跳出条件 if($n==1){ move($n, $x, ...
- 【原创】python requests 库底层Sockets处于close_wait状态
以前对于Requests库只是简单是使用,在现在公司的后台中,有多个接口是直接使用requests.get .post之类的方法来做的,进行过一段时间的压力测试,发现性能低的可怜,且linux服务器有 ...
- Java基础加强之并发(三)Thread中start()和run()的区别
Thread中start()和run()的区别 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用.run() : run()就和普通的成 ...
- springmvc IDEA
回顾Java平台上Web开发历程来看,从Servlet出现开始,到JSP繁盛一时,然后是Servlet+JSP时代,最后演化为现在Web开发框架盛行的时代.一般接触到一个新的Web框架,都会想问这个框 ...
- CentOS7.2安装mysql
1. 下载Mysql yum包 http://dev.mysql.com/downloads/repo/yum/ 复制链接使用wget下载 wget http://repo.mysql.com/mys ...
- Spring源码分析(六)解析和注册BeanDefinitions
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 当把文件转换为Document后,接下来的提取及注册bean就是我们的重 ...