使用过数据验证的小伙伴都知道,我们有inputMessage用于在输入数据前,点击单元格的输入提示。其实我们可以换个思路,将其改为输入出错后才显示,不出错时,则不显示,就像普通单元格一样。这个需要与ErrorMessage区分开来。本帖的目的就是实现出错提示能够悬浮展示,就像下图这样。
首先我们需要添加一个数据验证,并且将showInputMessage设为false,这样默认就不会显示InputMessage
- spread.options.highlightInvalidData = true;
- var dv = GC.Spread.Sheets.DataValidation.createNumberValidator(GC.Spread.Sheets.ConditionalFormatting.ComparisonOperators.between, "5", "20", true);
- dv.showInputMessage(false);
- dv.inputMessage("Value must be between 5 and 20.");
- dv.inputTitle("tip");
- sheet.setDataValidator(1, 1, 1,1,dv,GC.Spread.Sheets.SheetArea.viewport);
复制代码
接下来我们需要监听ValidationError事件,当该事件触发时,表示单元格数据验证没通过,此时我们把showInputMessage设为true,这样就能显示InputMessage的内容。
- sheet.bind(GC.Spread.Sheets.Events.ValidationError, function(e, args) {
- args.validator._ps.showInputMessage = true;
- });
复制代码
最后一步我们还需要监听ValueChanged事件,触发此事件后,我们在里面用isValid判断单元格的值是否合法,合法则将showInputMessage设为false,不再显示InputMessage的内容。
- sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function (e, info) {
- if(sheet.isValid(info.row, info.col,info.newValue)){
- sheet.getCell(info.row, info.col).validator()._ps.showInputMessage = false;
- }
- });
复制代码
|
|