在使用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调用外部函数验证相关推荐

  1. jQuery 表单验证插件,jQuery Validation Engine用法详解

    jQuery 表单验证插件,jQuery Validation Engine用法详解 功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身 ...

  2. jQuery验证控件jquery.validate.js使用说明+中文API

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  3. jquery validation engine ajax,validationEngine ajax验证 java

    参考资料: http://code.ciaoca.com/jquery/validation_engine/ http://www.cnblogs.com/aijun/archive/2011/03/ ...

  4. jQuery Validation Engine 表单验证

    转载至:http://code.ciaoca.com/jquery/validation_engine/ 功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 A ...

  5. jQuery 表单验证插件jQuery Validation Engine用法详解

    功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身拥有丰富的验证规则外,还可以添加自定义的验证规则. jQuery Validation ...

  6. jquery validation Engine表单验证

    jQuery Validation Engine 表单验证来源 功能强大的 jQuery 表单验证插件,适用于日常的 E-mail.电话号码.网址等验证及 Ajax 验证,除自身拥有丰富的验证规则外, ...

  7. jquery validation engine ajax验证,jQuery Validation Engine 表单验证

    名称 示例 说明 required validate[required] 表示必填项 groupRequired[string] validate[groupRequired[grp]] 在验证组为 ...

  8. javascript调用服务端验证控件

    //*******************Ajax 调用验证控件(客户端调用服务器验证控件)********************                 Page_ClientValida ...

  9. webform里的验证控件

    1.非空验证控件:RequireFieldValidator  :2.数据比较验证:CompareValidator :3.数据范围验证:RangeValidator :4.正则表达式验证:Regul ...

最新文章

  1. ThinkPHP 模型方法 setInc() 和 setDec()
  2. [Xcode 实际操作]五、使用表格-(11)调整UITableView的单元格顺序
  3. PHP 常用算法集锦
  4. 玩客云pc端_移动端灵活弹性云电销平台解决方案
  5. 【Linux 应用编程】进程管理 - 进程、线程和程序
  6. 苹果邮箱格式_3个小工具,让PDF格式不仅能编辑还能转成word 、execl、 ppt
  7. C++/MFC 串口通讯——光源控制器控制
  8. Scarpy源码分析6
  9. 使用three.js创建粒子火焰效果
  10. [js]调用google,51ditu和mapbar的地图API
  11. 融360 D轮融资超10亿 平台型互联网金融价值凸显
  12. 电脑iphone,如何从 iPhone 传输图片到电脑
  13. 梦想还是要有的,万一实现了呢?
  14. 如何把小程序游戏运行到自有app中?
  15. Python按特定字符分列
  16. 景安虚拟主机 Typecho设置伪静态教程 Apache 环境
  17. BI技巧丨近两年及当年月份数据汇总
  18. 最全的软件测试面试题(含答案)
  19. HDU-2660 Accepted Necklace
  20. prometheus PromSQL使用小技巧

热门文章

  1. Linux加一存在路由没事吧,Linux 添加永久静态路由的方法
  2. UI设计师遇到瓶颈如何自我提升?
  3. 【C#】详解C#异常
  4. jquery 搜索框自动提示
  5. spring aop 声明式事务管理
  6. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
  7. 【2015.9.1】微信开放平台
  8. 输入输出重定向和管道
  9. asp.net mvc 2被遗忘的%:Html.AntiForgeryToken() %
  10. 解决SQL SERVER 2000挂起的问题