找回密码
 立即注册

QQ登录

只需一步,快速开始

薇命是从

金牌服务用户

21

主题

54

帖子

203

积分

金牌服务用户

积分
203
薇命是从
金牌服务用户   /  发表于:2024-6-18 10:38  /   查看:1056  /  回复:11
本帖最后由 Clark.Pan 于 2024-7-2 17:56 编辑

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

image.png757031860.png
蓝色区域是可编辑区域、白色区域是禁止编辑区域

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

20240618_103646.mp4

1.22 MB, 下载次数: 206

11 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-6-18 11:56:33
沙发
您好,根据您的描述做了一个小demo  ,点击白色禁止编辑区域,也会触发CellClick事件,

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

移动端cellClick.html

3.45 KB, 下载次数: 127

回复 使用道具 举报
薇命是从
金牌服务用户   /  发表于:2024-6-18 14:42:10
板凳
Ellia.Duan 发表于 2024-6-18 11:56
您好,根据您的描述做了一个小demo  ,点击白色禁止编辑区域,也会触发CellClick事件,

刚刚检查代码、发现代码中有一段代码、这个应该会影响点击
  1. sheet.options.protectionOptions.allowSelectLockedCells = false
复制代码

全部的禁用操作是这样的
  1. function processLock (sheet, disabled) {
  2.     sheet.suspendPaint();
  3.     sheet.options.isProtected = true;
  4.     // sheet.options.protectionOptions.allowSelectLockedCells = false
  5.     for (var row = 0; row < sheet.getRowCount(); row++) {
  6.         for (var col = 0; col < sheet.getColumnCount(); col++) {
  7.             var cell = sheet.getCell(row, col);
  8.             if (cell.bindingPath()) {
  9.                 if (disabled) {
  10.                     cell.locked(true)
  11.                     cell.backColor("white")
  12.                 } else {
  13.                     cell.locked(false)
  14.                     cell.backColor("lightblue")
  15.                 }
  16.             }
  17.         }
  18.     }
  19.     sheet.resumePaint();
  20. }
复制代码


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

我们系统的主要想实现的业务是想要去点击空白处、不去选中单元格、同时又能判断出当前点击的单元格是否可填写、然后确定是失去焦点、还是聚焦当前单元格
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-6-18 18:47:12
地板
您好,我理解您删除掉这行代码已解决此问题。
sheet.options.protectionOptions.allowSelectLockedCells = false

至于您的业务逻辑,如果不去选中单元格,如何知道是锁定单元格呢?
回复 使用道具 举报
薇命是从
金牌服务用户   /  发表于:2024-6-19 08:38:51
5#
Ellia.Duan 发表于 2024-6-18 18:47
您好,我理解您删除掉这行代码已解决此问题。
sheet.options.protectionOptions.allowSelectLockedCells = ...

如果仅通过点击事件、有其他方法区分出单元格是禁用的还是非禁用的
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-6-19 09:23:21
6#
在点击事件(CellClick)中,可以获取当前点击单元格的row,col 。

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


回复 使用道具 举报
薇命是从
金牌服务用户   /  发表于:2024-6-19 09:48:47
7#
Ellia.Duan 发表于 2024-6-19 09:23
在点击事件(CellClick)中,可以获取当前点击单元格的row,col 。

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

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


在移动端无法触发cellClick事件
回复 使用道具 举报
薇命是从
金牌服务用户   /  发表于:2024-6-19 09:56:51
8#
image.png484485778.png

20240619_095248.mp4

4.86 MB, 下载次数: 226

回复 使用道具 举报
薇命是从
金牌服务用户   /  发表于:2024-6-19 10:01:22
9#

最终想实现的其实就是点击空白区域可以触发输入框endEdit 、但是现在在移动端无法触发这个事件
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-6-19 18:07:24
10#
本帖最后由 Ellia.Duan 于 2024-6-20 09:24 编辑

问题收到,需要调研下给您回复。SJS-24943
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部