泛微E9-前端js-流程表单字段变化事件内修改字段本身会循环调用问题

问题说明

流程表单字段变化事件内修改字段本身的值:此场景容易陷入死循环,那么需要自己思考出业务逻辑特定的结束条件结束死循环。

场景实例

近期有个流程表单用户在输入权重字段(百分比)时要求写入10转换为10%,不希望输入0.1这种操作,于是尝试添加公式将数值除以100或 乘以0.01,发现展示结果时0%,然后改用js 依旧是0%
思考应该是循环调用使得数值小于0.01,尝试打印代码确实是陷入循环了,思考了一下可以控制数据范围100%-1%时,数值小于1时 不再转换

jQuery(document).ready(function(){
    WfForm.bindDetailFieldChangeEvent("field11616,field11623",function(id,rowIndex,value){
      if(value<1){//防止死循环的条件
        return;
      };
        let _id = (id+'_'+rowIndex);
        let _value = (value/100);
        //console.log("WfForm.bindDetailFieldChangeEvent--",_id,_value);        
          WfForm.changeFieldValue(_id, {value:_value});        
    });
});

总结

流程表单字段变化事件内修改自身逻辑上本就是个循环,主要是找到结束循环条件。(官方文档提到文本类型修改是添加延时,但实际经测试还是触发2次,之前有过校验非法字符时清空字段,是添加条件字段不为空才校验)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值