一个基于prototype的通用的web验证框架使用详解

本文介绍了一种利用Prototype.js和自定义验证库实现的前端表单验证方法。该方法通过简单配置即可完成如非空检查、格式验证等功能,并支持自定义验证规则及AJAX验证。
原作网址:http://tetlaw.id.au/view/blog/really-easy-field-validation-with-prototype
扩展:badqiu (badqiu@gmail.com)
使用说明整理:Ivan Li (http://ivanl.iteye.com)
1:引用js文件
js 代码
 
  1. <script src=< span="">"prototype.js" type="text/javascript"></script>  
  2. <script src=<span class="string">"validation.js" type="text/javascript"></script>  

prototype.js是所有的基础
validation.js真正的验证框架文件,badqiu在原来的基础上增加了许多不错的功能.

2:引用css文件

可以参加style_min.css中的样式声明,也可以把style_min.css中的样式声明引入到你的框架js文件中去.

3:hellow world
在badqiu的扩展中如果要是某个form中的元素被验证可以这样给声明的form中加一个class='required-validate'的属性,框架会在load是自动绑定
所有要验证的域.
   
xml 代码
 
  1.   
  2.     <form id='helloworld' action="#" class='required-validate'>  
  3.         helloworld:br>  
  4.           
  5.         <textarea name='content' class='required min-length-2'>textarea>br>  
  6.         <input type='submit' value='Submit'/>  
  7.         <input type='reset' value='Reset'/>  
  8.     form>  

在要检查的域中通过class属性来声明被检查域的限制条件,例如上面的class='required min-length-2'表示这是一个非空,并且最小长度是2的域,
在编辑域失去焦点时,会自动检查,如果输入不满足上述条件,则产生错误提示.

4:检查规则说明
  • required -- 非空域
  • validate-number -- 一个有效数
  • validate-digits -- 只能包含[0-9]任意个数字
  • validate-alpha -- 只能是字母[a-zA-Z]
  • validate-alphanum -- 只能是字母和数字的组合
  • validate-date -- 只能是日期
  • validate-email -- 只能是有效的email
  • validate-url -- 只能是有效的url地址
  • validate-date-au -- 日期的形式必须是dd/mm/yyyy
  • validate-one-required -- 至少有一个被选中,例如一组checkbox, radiobutton,它们最好包含在一个div和span中
  • validate-date-cn -- 日期的形式必须是yyyy/mm/dd
  • validate-integer -- 只能是整数,可以有正负号
  • validate-chinese -- 只能是中文
  • validate-ip -- 有效的IP地址
  • validate-phone -- 有效的电话(仅适用于中国)
  • validate-mobile-phone -- 有效的手机号,在badqiu的版本中只验证了135的,有待改进
  • validate-equals-$otherInputId -- 必须和某个input field相等例如 validate-equals-otherInputId(此处$some表示一个特定的值)
  • less-than-$otherInputId -- 小于某个input field less-than-otherInputId(此处$some表示一个特定的值)
  • great-than-$otherInputId -- 大于某个input field less-than-otherInputId(此处$some表示一个特定的值)
  • min-length-$number -- 最小长度是$number(此处$some表示一个特定的值)
  • max-length-$number -- 最大长度是$number(此处$some表示一个特定的值)
  • validate-file-$type1-$type2-$typeX -- file的input必须是声明的$type1 -- $typeX中的一种
  • validate-float-range-$minValue-$maxValue -- 必须是$minValue到$maxValue的一个浮点数
  • validate-int-range-$minValue-$maxValue -- 必须是$minValue到$maxValue的一个整数
  • validate-length-range-$minLength-$maxLength -- 输入字符串的长度必须在$minLength到$maxLength之间
  • max-value-$number -- 输入域的最大值是$number
  • min-value-$number -- 输入域的最小值是$number
  • validate-pattern-$patternAttributes -- 通过自定义pattern来验证输入域的正确性
  • validate-ajax -- 通过ajax来验证输入域 ,例如

5:Validation的选项说明
可以手工指定要验证那个form,在指定是可以给定一些选项
js 代码
 
  1. <script type=< span="">"text/javascript">  
  2.     var valid = new Validation('form-id', {onSubmit:false});  
  3.     var result = valid.validate();  
  4. </script>  

创建Valuedation是的参数说明
onSubmit -- 是否绑定onSubmit函数, default - true
stopOnFirst -- 是否在检查到第一个错误时就停止检查 default- false
immediate -- 是否在被检测域失去焦点时就检查被检查域 default - false
focusOnError -- 是否把焦点移动到发生错误的域上 default - true
useTitles -- 是否使用提示 default - false
onFormValidate:当form被检测和的回调函数,有两个输入参数 arg[0]-检测form的结果true or false, arg[1]-form本身的id
onElementValidate:当没个element被检查后的回调函数,有两个输入参数 arg[0]-检测form的结果true or false, arg[1]-element本身的id

6:添加自己的测试函数
js 代码
 
  1. Validation.add('class-name', 'Error message text', function(value [, element]) {  
  2.      return /* do validation here */  
  3. });  


或者这样
js 代码
 
  1. Validation.addAllThese([  
  2.      ['required', 'This is a required field.', function(v) {  
  3.        return !Validation.get('IsEmpty').test(v);  
  4.      }],  
  5.      ['validate-number', 'Please use numbers only in this field.', function(v) {  
  6.        return Validation.get('IsEmpty').test(v) || !isNaN(v);  
  7.      }],  
  8.      ['validate-digits', 'Please use numbers only in this field.', function(v) {  
  9.        return Validation.get('IsEmpty').test(v) ||  !/[^\d]/.test(v);  
  10.      }]  
  11. ]);   
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值