找回密码
 立即注册

QQ登录

只需一步,快速开始

linxiang19

初级会员

25

主题

65

帖子

242

积分

初级会员

积分
242
linxiang19
初级会员   /  发表于:2018-4-3 10:26  /   查看:4971  /  回复:2
请问版主. JS 中自身带有许多校验器.如数字.长度.时间等..当我想对同一个格子进行多种校验时候.怎么绑定多个校验器..目前发现好像是后面绑定的覆盖到前面的.请问怎么设置呢.还是说只能自定义各种混合校验器 然后一个一个的去判断.绑定自定义的校验器?

2 个回复

正序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-4-3 18:55:37
板凳
您好:
您可以参考:
http://help.grapecity.com/spread ... .ConditionType.html
其中relationCondition是可以拼接多个条件的,条件之间可以用and 或 or来链接,参考:
http://help.grapecity.com/spread ... gicalOperators.html
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-4-3 16:13:10
沙发
您好,这个问题需要您自定义一个Condition,在Condition的evaluate 中去写您的验证逻辑,该方法最后只需要return true/false;
下面代码您参考一下:
  1. var ns = GC.Spread.Sheets;

  2. function RegExCondition(expected) {
  3. ns.ConditionalFormatting.Condition.call(this, ns.ConditionalFormatting.TextCompareType.EqualsTo, {expected: expected});
  4. }
  5. RegExCondition.prototype = new ns.ConditionalFormatting.Condition(ns.ConditionalFormatting.ConditionType.TextCondition);
  6. RegExCondition.prototype.evaluate = function (evaluator, baseRow, baseColumn, actualObj) {
  7. var reg = new RegExp(this.expected());
  8. if (actualObj) {
  9. return reg.test(actualObj.toString());
  10. }
  11. }
  12. $(document).ready(function () {
  13. var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), {sheetCount: 3});
  14. var sheet = spread.getActiveSheet();
  15. var condition = new RegExCondition("(?:&|<|>|"|\'|`)");
  16. var validator = new ns.DataValidation.DefaultDataValidator(condition);
  17. validator.type(ns.DataValidation.CriteriaType.Custom);
  18. sheet.setDataValidator(0, 0, validator);
  19. spread.options.highlightInvalidData = true;
  20. });
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部