薇命是从 发表于 2024-6-18 10:38:35

v17.0.0 移动端CellClick不生效

本帖最后由 Clark.Pan 于 2024-7-2 17:56 编辑

产品:SpreadJS
版本:V17.0.0
调研编号:SJS-24943
LastReview:2024-7-2
V17.1.0已经修复


蓝色区域是可编辑区域、白色区域是禁止编辑区域

因为做了一些操作、在点击蓝色区域后、回自动聚焦单元格输入框、但是如果想失去聚焦就需要手动处理、我这这里采用的是CellClick事件监听来做的
然而遇到一个问题、cellClick在移动端点击禁用区域不会被触发

Ellia.Duan 发表于 2024-6-18 11:56:33

您好,根据您的描述做了一个小demo,点击白色禁止编辑区域,也会触发CellClick事件,


所以未能复现您的问题。
您可以在此demo基础上,添加相关代码,使问题可以复现后,再上传上来。

薇命是从 发表于 2024-6-18 14:42:10

Ellia.Duan 发表于 2024-6-18 11:56
您好,根据您的描述做了一个小demo,点击白色禁止编辑区域,也会触发CellClick事件,




刚刚检查代码、发现代码中有一段代码、这个应该会影响点击
sheet.options.protectionOptions.allowSelectLockedCells = false
全部的禁用操作是这样的
function processLock (sheet, disabled) {
    sheet.suspendPaint();
    sheet.options.isProtected = true;
    // sheet.options.protectionOptions.allowSelectLockedCells = false
    for (var row = 0; row < sheet.getRowCount(); row++) {
      for (var col = 0; col < sheet.getColumnCount(); col++) {
            var cell = sheet.getCell(row, col);
            if (cell.bindingPath()) {
                if (disabled) {
                  cell.locked(true)
                  cell.backColor("white")
                } else {
                  cell.locked(false)
                  cell.backColor("lightblue")
                }
            }
      }
    }
    sheet.resumePaint();
}

移除了允许选择锁定单元格这个配置后确实可以了

我们系统的主要想实现的业务是想要去点击空白处、不去选中单元格、同时又能判断出当前点击的单元格是否可填写、然后确定是失去焦点、还是聚焦当前单元格

Ellia.Duan 发表于 2024-6-18 18:47:12

您好,我理解您删除掉这行代码已解决此问题。
sheet.options.protectionOptions.allowSelectLockedCells = false

至于您的业务逻辑,如果不去选中单元格,如何知道是锁定单元格呢?

薇命是从 发表于 2024-6-19 08:38:51

Ellia.Duan 发表于 2024-6-18 18:47
您好,我理解您删除掉这行代码已解决此问题。
sheet.options.protectionOptions.allowSelectLockedCells = ...

如果仅通过点击事件、有其他方法区分出单元格是禁用的还是非禁用的

Ellia.Duan 发表于 2024-6-19 09:23:21

在点击事件(CellClick)中,可以获取当前点击单元格的row,col 。

然后通过下面的代码获取是否锁定:
sheet.getCell(row,col).locked()

薇命是从 发表于 2024-6-19 09:48:47

Ellia.Duan 发表于 2024-6-19 09:23
在点击事件(CellClick)中,可以获取当前点击单元格的row,col 。

然后通过下面的代码获取是否锁定:


如果添加了这个
sheet.options.protectionOptions.allowSelectLockedCells = false


在移动端无法触发cellClick事件

薇命是从 发表于 2024-6-19 09:56:51


薇命是从 发表于 2024-6-19 10:01:22

薇命是从 发表于 2024-6-19 09:56


最终想实现的其实就是点击空白区域可以触发输入框endEdit 、但是现在在移动端无法触发这个事件

Ellia.Duan 发表于 2024-6-19 18:07:24

本帖最后由 Ellia.Duan 于 2024-6-20 09:24 编辑

问题收到,需要调研下给您回复。SJS-24943
页: [1] 2
查看完整版本: v17.0.0 移动端CellClick不生效