找回密码
 立即注册

QQ登录

只需一步,快速开始

小磯健二

注册会员

8

主题

26

帖子

78

积分

注册会员

积分
78
小磯健二
注册会员   /  发表于:2024-12-19 16:29  /   查看:47  /  回复:6
10金币

我现在有一个单元格,它的style是dropDowns.dateTimePicker,我现在想实现让这个单元格只能输入6位,在focusin的状态的时候,最多只能输6位,再输的话就不让多余的值放入单元格,该怎么实现
或者说,spreadJs有在单元格内每输入一个字符,不需要focusout就触发的方法吗

最佳答案

查看完整内容

您可以使用mask,代码如下:

6 个回复

倒序浏览
最佳答案
最佳答案
香香
注册会员   /  发表于:前天 16:29
来自 2#
您可以使用mask,代码如下:
  1. style = new GC.Spread.Sheets.Style();
  2.     style.mask = {
  3.         pattern: "yyyymmdd"
  4.     };
  5.     sheet.setStyle(1, 1, style);
复制代码


回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:前天 17:33
3#
您好!2楼热心用户提供的方法很可行,我再给您提供另外一种方式。您打开思路,酌情使用即可。

可以尝试监听EditChange事件,监听到的输入值被记录在参数editingText中,判断该属性值的长度是否等于6即可。

除此之外,需要先判断当前单元格的Style中的cellButtons的command是否为openDateTimePicker。可以参考如下代码:
  1. sheet.bind(GC.Spread.Sheets.Events.EditChange, function(e, args) {
  2.     console.log('edit change, args: ', args);
  3.     var style = sheet.getStyle(args.row, args.col);
  4.     if (style && style.cellButtons && style.cellButtons[0].command === 'openDateTimePicker') {
  5.         if (args.editingText && args.editingText.length === 6) {
  6.             console.log('长度超限');
  7.             sheet.endEdit();
  8.         }
  9.     }
  10. });
复制代码

评分

参与人数 1满意度 +5 收起 理由
小磯健二 + 5

查看全部评分

回复 使用道具 举报
小磯健二
注册会员   /  发表于:昨天 09:25
4#
Wilson.Zhang 发表于 2024-12-19 17:33
您好!2楼热心用户提供的方法很可行,我再给您提供另外一种方式。您打开思路,酌情使用即可。

可以尝试 ...

用mask的话,单元格内未输入的部分有下划线,这个可以去掉吗
image.png918849487.png
回复 使用道具 举报
小磯健二
注册会员   /  发表于:昨天 10:14
5#
Wilson.Zhang 发表于 2024-12-19 17:33
您好!2楼热心用户提供的方法很可行,我再给您提供另外一种方式。您打开思路,酌情使用即可。

可以尝试 ...

用了excludePlaceholder: true之后解决了,感谢
回复 使用道具 举报
小磯健二
注册会员   /  发表于:昨天 10:16
6#
香香 发表于 2024-12-19 17:30
您可以使用mask,代码如下:

太帅了,感谢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:昨天 10:20
7#
小磯健二 发表于 2024-12-20 10:14
用了excludePlaceholder: true之后解决了,感谢



解决了就好,您可以参考官网产品文档了解掩码模式对日期和数值的支持:
https://demo.grapecity.com.cn/sp ... t-doc-content_title

那就结贴了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部