小磯健二 发表于 2024-12-19 16:29:45

【v17】单元格的maxlength


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

香香 发表于 2024-12-19 16:29:46

您可以使用mask,代码如下:
style = new GC.Spread.Sheets.Style();
    style.mask = {
      pattern: "yyyymmdd"
    };
    sheet.setStyle(1, 1, style);

Wilson.Zhang 发表于 2024-12-19 17:33:25

您好!2楼热心用户提供的方法很可行,我再给您提供另外一种方式。您打开思路,酌情使用即可。

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

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

小磯健二 发表于 2024-12-20 09:25:13

Wilson.Zhang 发表于 2024-12-19 17:33
您好!2楼热心用户提供的方法很可行,我再给您提供另外一种方式。您打开思路,酌情使用即可。

可以尝试 ...

用mask的话,单元格内未输入的部分有下划线,这个可以去掉吗

小磯健二 发表于 2024-12-20 10:14:20

Wilson.Zhang 发表于 2024-12-19 17:33
您好!2楼热心用户提供的方法很可行,我再给您提供另外一种方式。您打开思路,酌情使用即可。

可以尝试 ...

用了excludePlaceholder: true之后解决了,感谢

小磯健二 发表于 2024-12-20 10:16:20

香香 发表于 2024-12-19 17:30
您可以使用mask,代码如下:

太帅了,感谢

Wilson.Zhang 发表于 2024-12-20 10:20:07

小磯健二 发表于 2024-12-20 10:14
用了excludePlaceholder: true之后解决了,感谢

:hjyzw:

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

那就结贴了。如有新问题,欢迎发新帖沟通。
页: [1]
查看完整版本: 【v17】单元格的maxlength