|
使用版本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)的值?
填报控制项在「编辑结束」失焦后,要如何写才能彻底覆盖帆软底层的样式,让单元格背景成功变色且不会被刷掉?
恳请高手解惑,非常感谢! |