用js代码设置控件事件实现单元格联动,但如果是excel导入或者复制粘贴的方式不生效

楼主
我是社区第729176位番薯,欢迎点我头像关注我哦~
具体开发设计如图所示,概括步骤如下:

1、K2单元格添加文本控件,文本控件设置了“编辑结束”事件;
2、在事件中添加了JS代码,实现K2单元格与C2单元格的联动,即K2单元格编辑结束后,C2会自动填充一个数据,比如K2出现了【XXX】,就会通过JS代码在C2中填写XXX;
3、这个JS代码在直接双击K2单元格进行编辑时,是生效的。但是一旦K2的数据是excel导入或者复制粘贴进去的,该JS代码就不生效;
4、通过测试后发现,如果K2的数据是excel导入或者复制粘贴的,那么在K2事件中的JS代码“var val = this.getValue()”获取的值为空,C2也就没有值可以插入。

因此,想询问一下,怎样才能让复制或excel导入数据时,JS代码“var val = this.getValue()”这里获取到的值不为空?

当然,如果并非此原因,也期待大家的指点。非常感谢!

K2单元格规定输入格式为hh:mm,控件事件的JS代码如下:

var val = this.getValue();
if (val.length !== 0) {
        var result = val.match(/\d+:\d+/).toString();
        var pl = result.match(/\d+/g);

        var hh = parseInt(pl[0]);
        var mm = parseInt(pl[1]);

        var finalCalc = hh * 60 + mm;
        contentPane.setCellValue(2, row, finalCalc);
}



分享扩散:

沙发
发表于 2022-4-10 23:13:03
今天我也碰到了同样的问题,JS 代码我不太会,通过增加一列绕过去了,我的方法是对你可能修改的列比如K2 增加一个辅助列L 列,K2 列和L2 使用相同的查询字段,然后C2 中公式写 K2=L2 ,辅助列L2 可以隐藏,再在报表填报属性里设置提交条件为C2= False 就可以 达到你想要的未修改不更新效果了。
下面是我的例子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1回帖数 1关注人数 2849浏览人数
最后回复于:2022-4-10 23:13

返回顶部 返回列表