验证控件jQuery Validation Engine调用外部函数验证
在使用jQuery Validation Engine的时候,我们除了使用自带的API之外,还可以自己自定义正则验证。自定义正则验证上一篇已经讲过了,如果想使用自定义函数进行验证怎么办?其实这个控件有个bug,在api中说
也就是在我们需要进行验证的地方加上funcCall[自定义函数名],但是我们会发现总会报错,说找不到你这个函数名。其实它的要求是要添加required进行综合验证,也就是validate[required,funcCall[yorn]],这样它才识别我们的自定义函数。但是我们就是不想要required这个呢?或者说我们在符合某种条件下才想让required这个非空验证功能生效呢?
<textarea class="m-area add-tw validate[funcCall[yorn]]" id="remark" cols="30" rows="10" ></textarea>
那么就需要使用以下几种方法综合施行,网上老外的解决办法就是在函数中push一个required,可以让其正常执行。
我定义了一个yorn的函数,而基本格式就是function yorn(field, rules, i, options){},其中field代表的是你验证的那个元素,我这里验证的是textarea,那么field就代表的是textarea。
首先我讲一下我要实现的功能,我的需求是在点击不通过且备注为空的时候触发验证,提示“必须填写内容”。那么在通过备注为空,通过备注不为空,不通过备注不为空的情况下都不能触发验证提示信息。而如果validate[required]这样的话,只要不填写备注信息都会触发提示信息。所以我的思路是,当点击保存按钮的时候判断,点击的是哪个radio,点击不通过的时候给不通过的radio添加一个自定义属性,同时赋值。而当点击通过radio的时候删除这个自定义属性。然后接着进入验证,也就是进入自定义函数,获取到不通过radio的自定义属性值,获取到备注的value,然后判断这两个条件是否同时成立,如果条件成立,则首先rules.push('required');因为我们前面说了如果想要实现自定义函数验证必须要有required,然后接着return options.allrules.required.alertText; 这句话是什么意思呢?就是返回你要提示的信息。而这个提示信息则另有地方进行设置。
html文件,validate[funcCall[yorn]]设置自定义函数validate[funcCall[自定义函数名]]
<form id="approval">//这个验证控件必须有form<div class="name-ipt"><div class="m-name"><span>意见:</span></div><input type="radio" name="trial" class="m-radio col" />通过<input type="radio" name="trial" class="m-radio col" id="nocheck"/>不通过</div><div class="name-ipt"></div><div class="area-ipt add-td"><div class="m-name"><span>备注:</span></div><textarea class="m-area add-tw validate[funcCall[yorn]]" id="remark" cols="30" rows="10"></textarea><span class="m-span add-stl">剩余可输入1000字</span></div></div> </form> <div class="add-sb"><a href="#" class="save-btn m" ng-click="saveAudit()" >保存</a> </div>(有效:步骤1)
因为我是用的angular,所以给保存一个事件,在点击保存的时候触发事件,然后判断两个radio哪个被checked,其他的上面说过。接着触发验证进入自定义函数中。、、
//自己js文件中写//保存 $scope.saveAudit = function(){if($('#nocheck').attr('checked')){$("#remark").attr("trialAttr",'N');}else{$("#remark").removeAttr('trialAttr');}if($('#approval').validationEngine('validate')){ //验证通过的话之后要执行的内容 } }(有效:步骤2)
自定义函数必须带rules.push('required');同时return options.allrules.required.alertText;这个自定义函数写在自己的js文件里就行
//自己的js文件中写function yorn(field, rules, i, options){var trialAttr = field.attr("trialAttr") ;var textareaval = field.val();if(trialAttr == "N" && textareaval==''){rules.push('required');return options.allrules.required.alertText;} }(有效:步骤3)
接下来要设置自定义提示信息了,找到jquery.validationEngine-zh_CN.js文件,然后在最下面自己跟随一个对象,函数名在前面,后面alertText后跟你要提示的信息。这样就OK了。
//这个在jquery.validationEngine-zh_CN.js中写
(有效:步骤4)
之前我在这个文件的下面按照api自定义了一个函数,但是发现根本无法执行,因为当进入验证的时候,首先判断validate[required,funcCall[yorn]]的自定义函数中是否存在required,如果不存在就无法进入到jquery.validationEngine-zh_CN.js这个文件中执行我们内部定义的函数。但是如果把自定义函数放在我们自己的js中,就会先执行我们自己js文件中的函数,最后才判断是否存在required,而这个时候我们已经push进去了,所以就不会报错说找不到你自定义函数名了。
(这个是无效且不可执行的,不要用)
这个验证控件其实挺不错的,只是这个bug给搞了半天,还好网上有解决办法,但是貌似没有一个像我说的这么清楚的,都是点明一下而已。希望能够帮助到大家,同时自己留存以后用。
转载于:https://www.cnblogs.com/hanyining/p/6296354.html
验证控件jQuery Validation Engine调用外部函数验证相关推荐
- jQuery 表单验证插件,jQuery Validation Engine用法详解
jQuery 表单验证插件,jQuery Validation Engine用法详解 功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身 ...
- jQuery验证控件jquery.validate.js使用说明+中文API
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
- jquery validation engine ajax,validationEngine ajax验证 java
参考资料: http://code.ciaoca.com/jquery/validation_engine/ http://www.cnblogs.com/aijun/archive/2011/03/ ...
- jQuery Validation Engine 表单验证
转载至:http://code.ciaoca.com/jquery/validation_engine/ 功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 A ...
- jQuery 表单验证插件jQuery Validation Engine用法详解
功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身拥有丰富的验证规则外,还可以添加自定义的验证规则. jQuery Validation ...
- jquery validation Engine表单验证
jQuery Validation Engine 表单验证来源 功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身拥有丰富的验证规则外, ...
- jquery validation engine ajax验证,jQuery Validation Engine 表单验证
名称 示例 说明 required validate[required] 表示必填项 groupRequired[string] validate[groupRequired[grp]] 在验证组为 ...
- javascript调用服务端验证控件
//*******************Ajax 调用验证控件(客户端调用服务器验证控件)******************** Page_ClientValida ...
- webform里的验证控件
1.非空验证控件:RequireFieldValidator :2.数据比较验证:CompareValidator :3.数据范围验证:RangeValidator :4.正则表达式验证:Regul ...
最新文章
- ThinkPHP 模型方法 setInc() 和 setDec()
- [Xcode 实际操作]五、使用表格-(11)调整UITableView的单元格顺序
- PHP 常用算法集锦
- 玩客云pc端_移动端灵活弹性云电销平台解决方案
- 【Linux 应用编程】进程管理 - 进程、线程和程序
- 苹果邮箱格式_3个小工具,让PDF格式不仅能编辑还能转成word 、execl、 ppt
- C++/MFC 串口通讯——光源控制器控制
- Scarpy源码分析6
- 使用three.js创建粒子火焰效果
- [js]调用google,51ditu和mapbar的地图API
- 融360 D轮融资超10亿 平台型互联网金融价值凸显
- 电脑iphone,如何从 iPhone 传输图片到电脑
- 梦想还是要有的,万一实现了呢?
- 如何把小程序游戏运行到自有app中?
- Python按特定字符分列
- 景安虚拟主机 Typecho设置伪静态教程 Apache 环境
- BI技巧丨近两年及当年月份数据汇总
- 最全的软件测试面试题(含答案)
- HDU-2660 Accepted Necklace
- prometheus PromSQL使用小技巧
热门文章
- Linux加一存在路由没事吧,Linux 添加永久静态路由的方法
- UI设计师遇到瓶颈如何自我提升?
- 【C#】详解C#异常
- jquery 搜索框自动提示
- spring aop 声明式事务管理
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
- 【2015.9.1】微信开放平台
- 输入输出重定向和管道
- asp.net mvc 2被遗忘的%:Html.AntiForgeryToken() %
- 解决SQL SERVER 2000挂起的问题