【求助】填报时若超标则背景色变红

楼主
我是社区第2716614位番薯,欢迎点我头像关注我哦~

使用版本FR 10.0

我想在填报介面实现一个「超标自动标红」的动态防呆功能:

当使用者在 AD10 输入规格值(Spec),若 AD9 超出「规格值 ± 公差 AD11」的范围,就要立刻把 AD10 的单元格背景标示为红色。

判定逻辑:(AD10 - AD11) > AD9 或是 (AD10 + AD11) < AD9 时,AD10 背景变红。

 

【表单结构与变数说明】

这三个栏位都在同一栏(AD栏),由上到下分别是:

AD7:是一个向下扩展的单元格,使用者可以点击「插入列」动态增加多笔明细资料。

AD8 :这是公式格 SUM(AD7)

AD9 (Total mm):这是公式格(AD8/1000),显示实测值。上方 AD7 会动态增删行。

AD10 (Spec mm):数字控制项(使用者输入),我要在这个控制项写「编辑结束事件」。

AD11 (Tolerance):数字控制项(使用者输入),公差。

 

因为扩展/插入行,导致抓不到 AD9 的值

一开始我用帆软原生的 _g().getCellValue("AD9") 或是透过 DOM id $('td[id^="AD9-"]') 来抓取实测值,但只要使用者在上方 AD7 插入了行,这些语法就会抓到扩展出来的中间空白格,或者回传 undefined。

后来改用 DOM 的相对位置抓取:利用 AD10 当前的 td 往上找一列(closest("tr").prev("tr")),并匹配相同的 col 属性,但 Alert 弹窗侦错时,有时依然会抓到空值,似乎受到合并单元格或其他底层渲染影响。

 

想请教各位前辈:

在上方有动态插入扩展行的情况下,如何在其下方的控制项(AD10)中,精准且稳定地抓取正上方公式格(AD9)与正下方控制项(AD11)的值?

填报控制项在「编辑结束」失焦后,要如何写才能彻底覆盖帆软底层的样式,让单元格背景成功变色且不会被刷掉?

恳请高手解惑,非常感谢!

分享扩散:

沙发
发表于 2026-10-10 10:25:27

您好 请往问答平台中心去提问:https://bbs.fanruan.com/wenda
板凳
发表于 2026-10-13 09:09:22

超标则背景色变红.zip (3.14 K)FR11.0开发的,不知道FR10能不能正常打开

//获取当前单元格值,相对位置单元格值

var loc = FR.cellStr2ColumnRow(this.options.location); // 当前单元格

//alert(loc.col);

var spec = contentPane.getCellValue(0, loc.col, loc.row);

var total = contentPane.getCellValue(0, loc.col, loc.row - 1);

var tolerance = contentPane.getCellValue(0, loc.col, loc.row + 1);



if (spec > total + tolerance || spec < total - tolerance) {

	_g().getCell(loc.row + 1, loc.col + 1).setStyle({

		background: 'red'

	});

} else {

	_g().getCell(loc.row + 1, loc.col + 1).setStyle({

		background: 'white'

	});

};

//alert('编辑结束');
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表