JS修改E9字段普通字段以及特殊字段的颜色

JS修改字段颜色

有些时候需要在流程里面对于某些特定的字段进行高亮或者变色凸显,这个时候就需要用到JS代码来进行调整了。如果是需要批量修改字段颜色的话,可以将逻辑抽出来集成一个方法,这样的话后面只需要传字段ID就可以了

function changeColor(before,after){
  console.log("进入方法changeColor---")
  
    var valueBefore = WfForm.getFieldValue(before);
    var valueAfter = WfForm.getFieldValue(after);
    if((valueAfter != "" || valueBefore != "") && valueBefore != valueAfter){
      // alert("变更前变更后值不同")
        console.log("before---",before)
        console.log("after---",after)
        document.getElementById(after+"span").style.color="red";
    }
}

上面的这个只是简单的对一些文本类型的字段进行改色,对有些字段是不起作用的

如何看对哪些字段起作用呢?

这个时候就需要用到F12调出浏览器的开发者工具了

这样的字段一般都是起效的

那么那种字段是不能通过这种方式来获取的呢?

一般日期选择器,或者浏览字段以及多文本字段都不能直接通过拼接span来实现的,可以也通过上面的方式进行查看

这里看到字段的class标签以及其中的内容与普通的文本标识是不一样的,所以这个时候可以通过一个通用的方法来进行文字的变色处理

function changeLi(before,after){
    console.log("进入变色方法")
    var valueBefore = WfForm.getFieldValue(before);
    var valueAfter = WfForm.getFieldValue(after);
    console.log(valueBefore)
    console.log(valueAfter)
    if((valueAfter != "" || valueBefore != "") && valueBefore != valueAfter){
      console.log("before---",before)
      console.log("after---",after)
      var dom = jQuery(`.${after}_swapDiv`).closest("td");//这里是指找到对应最近的一个td元素,也就是这个字段所在的单元格
      if (dom.length > 0) {
            // 在找到的 td 元素内部查找所有的div元素,并将它们的文字颜色设置为红色
            dom.find("div").css("color", "red");
        }
    }
  }

按照这种方式就能将单元格里面的文字变色了,这个方法是通用的方法,重点在于
jQuery(`.${after}_swapDiv`).closest("td")这里指定了class,这里的after是传的字段id

重点在于类选择器需要指定字段id,因为字段id是唯一标识的。

这个不仅仅可以用于变色处理,无论是你想要加粗还是添加背景色都可以这样,只要能找到对应的标签即可进行相应的css操作

<think>嗯,用户问的是如何在E9流程代码块中实现明细表行样式的高亮显示。首先,我需要回想一下E9的相关知识,特别是流程表单设计和代码块的使用。根据之前的引用资料,用户提到过动态增加按钮和隐藏字段的方法,可能涉及到前端脚本和后台逻辑的结合。 首先,明细表在E9中通常以表格形式展示,要实现行高亮可能需要修改行的样式属性。常见的方法是通过JavaScript在客户端动态修改DOM元素的样式。用户可能需要根据某些条件来改变行的背景颜色,比如特定字段的值满足条件时。 接下来,我需要考虑E9的代码块支持哪些脚本语言。通常,这类系统允许使用JavaScript或类似前端的脚本。参考之前的引用,用户提到过代码块根据主表隐藏明细表字段,这可能需要使用类似的方法,比如在代码块中嵌入JavaScript代码,监听字段变化,然后动态调整样式。 然后,具体到如何选中明细表的行。可能需要通过DOM选择器找到对应的表格行,可能通过CSS类名或者ID。例如,明细表可能有一个特定的class,如`detail-table`,然后每一行可能有`tr`元素。通过遍历这些行,检查其中的字段值,如果满足条件,就应用背景颜色。 另外,用户可能需要根据不同的条件设置不同的高亮颜色,比如红色表示紧急,黄色表示警告等。这时候需要在代码中判断字段的值,并设置对应的样式。同时,还需要考虑动态性,即当字段值改变时,高亮样式也能实时更新,这可能需要绑定事件监听器,比如`onchange`事件。 然后,需要确保代码的正确性和兼容性。E9的系统可能对某些JavaScript方法或属性有特定的限制或要求,比如可能需要使用内部API来访问字段值,而不是直接通过DOM操作。因此,可能需要查阅E9的开发文档或社区资源,确认正确的方法。 此外,用户可能还需要在代码块中如何放置这些脚本。通常,代码块可以插入到表单的初始化事件或某个按钮的点击事件中。但根据需求,可能需要将脚本放在表单加载时自动执行,以便在页面加载完成后立即应用高亮效果。 最后,测试和调试也是关键。建议用户先在一个测试环境中尝试代码,逐步验证每一步的效果,比如是否能正确选中行,是否能根据条件改变样式,以及是否在数据变化时更新样式。如果遇到问题,可能需要检查控制台是否有错误信息,或者调整选择器和方法的使用。 总结一下,步骤可能包括:1. 使用JavaScript选择明细表行;2. 根据字段值判断条件;3. 动态应用样式;4. 绑定事件监听以确保动态更新;5. 在代码块中正确插入脚本;6. 测试和调试。</think>在E9流程代码块中实现明细表行样式高亮显示,可通过以下步骤实现: ### 实现步骤 1. **绑定字段事件** ```javascript // 监听明细表字段变化 WfForm.bindFieldChangeEvent("detailTable", function(obj, id, rowIndex){ updateRowStyle(rowIndex); }); ``` *说明:通过`bindFieldChangeEvent`监听明细表字段变化事件[^1]。* 2. **样式控制函数** ```javascript function updateRowStyle(rowIndex){ var amount = WfForm.getFieldValue("detailTable", rowIndex, "amount"); var row = $("#detailTable tr").eq(rowIndex + 1); // 排除表头行 if(amount > 10000) { row.css("background-color", "#FFB6C1"); // 金额超限红色警示 } else { row.css("background-color", ""); // 清除样式 } } ``` *说明:使用jQuery选择器定位明细表行,根据字段值动态设置背景色[^2]。* 3. **初始化执行** ```javascript // 页面加载时初始化所有行 $(function(){ $("#detailTable tr:gt(0)").each(function(index){ updateRowStyle(index); }); }); ``` ### 关键配置说明 1. `detailTable`:需要替换为实际的明细表编号 2. `amount`:需要替换为实际控制的字段编号 3. 颜色代码可根据企业规范自定义 4. 支持多条件组合判断(可扩展`if`条件逻辑) ### 效果验证 当明细表金额字段超过10000时,对应行自动显示粉色背景,修改数值后颜色实时更新。测试时建议: 1. 在开发环境先行验证 2. 使用浏览器开发者工具检查元素样式 3. 注意不同浏览器的兼容性
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值