JQuery validation源码解析
来源:互联网 发布:淘宝举报卖家 编辑:程序博客网 时间:2024/05/27 09:46
一.解析目的
解决umeditor富文本编辑器与jquery validation的冲突。并了解其原理。
二、大体结构
1.总体部分
(function( factory ) { if ( typeof define === "function" && define.amd ) { define( ["jquery"], factory ); } else { factory( jQuery ); }}(function( $ ) { ...});
引入这段js时,会立即执行function(factory),factory为传入的参数function。由代码看到,实际上是执行传入参数的function。
2.展开上面的参数
$.extend($.fn, { validate: function( options ) {...}, valid:function(){...}, ...};...$.validator=function(options,form){ ... this.init();};...$.extend($.validator,{ defaults:{...}, setDefaults:function(settings){...), ... prototype:{ init:function(){...}, ... }});...
上面是整个jquery validation的重要层次结构。由上可知,它扩展了jquery对象的validate与valid方法,同时扩展了一个静态方法validator.
3.Jquery validation的入口
我们使用时,在document ready后会写下这样的代码:$(“#form”).validate(…);这就是它的入口,我们来看看jquery validation扩展的validate方法。
validate:function(options){ ... validator = new $.validator(options,this[0]); if(validator.settings.onsubmit){ this.on("click.validate", ":submit",function(event){...}; this.on("submit.validate",function(event){...} }}
我们看到,在我们程序中调用$("#form").validate(...);时,它实际上是new了一个$.validator
的对象,并且对submit绑定了事件。重点即将来临,在我们创建validator时,它会调用init方法。啰嗦一下,在javascript创建对象new $.validator()时,首先会创建一个空的object,然后会将object的__proto__
指向validator的prototype,拥有它的属性与方法,最后执行一遍validator().我们来看init.
init:function(){ ... function delegate(event){...} $(this.currentForm).on("focusin.validate focusout.validate keyup.validate",...,delegate).on("click.validate",...delegate);}
这里对form的focus与click事件进行了监听。
至此再对照源码走读一遍,整个jquery validation的代码就比较清晰了。有兴趣还可以对valid方法进行分析。
- JQuery validation源码解析
- jQuery Validation - 1.12.0 深度解析1
- JQuery Validation
- jquery validation
- JQuery Validation
- jquery.Validation
- jQuery Validation
- jquery validation
- jquery validation
- jquery源码解析
- jquery源码解析
- jquery源码解析资料
- jQuery.extend()源码解析
- jQuery 源码解析(一)
- jquery源码解析1
- 浅谈jquery源码解析
- jQuery源码解析data
- 关于JQuery源码解析
- 获取版本号和清除缓存
- 基于Antisamy项目实现防XSS攻击
- 使用反射 实例化 构造器带有数组参数的类
- poj 1840hash
- 【实验】电话拨号、动态添加按钮
- JQuery validation源码解析
- Add platform android error
- Xcode 6.1 做ipa企业级分发(In-House模式)详细步骤
- tomcat内存溢出设置JAVA_OPTS
- Xcode7_IOS开发之免费证书真机调试
- PHP对象转成多维数组
- MariaDB 10.1 可每秒处理一百万次查询
- 从头认识java-2.4 逻辑运算符
- 深入探索 Java 热部署