整合系统原有的回调函数,然后统一调用同一个回调函数:
var ECSTM = {}; ECSTM.addFormValueChangeEvent = function(fnCallBack) { var oldCheckinput2 = window.checkinput2; var oldWfbrowvaluechange = window.wfbrowvaluechange; var oldOnWorkFlowShowTime = window.onWorkFlowShowTime; var _fieldId, _rowIndex, _value; // 文本框、下拉选择 window.checkinput2 = function(eId, eSpanId, viewType) { // eId: field5847_0, eSpanId: field5847_0span, viewType: 0 var fieldIdInfo = eId.split('_'); _fieldId = fieldIdInfo[0]; _rowIndex = fieldIdInfo[1]; _value = $('#' + eId).val(); fnCallBack(_fieldId, _rowIndex, _value); oldCheckinput2(eId, eSpanId, viewType); }; // 浏览按钮(人力资源、部门、日期) window.wfbrowvaluechange = function(obj, fieldid, rowindex) { // obj: [object HTMLInputElement], fieldid: 5832, rowindex: _fieldId = 'field' + fieldid; _rowIndex = rowindex; _value = isNaN(parseInt(rowindex)) ? $('#' + _fieldId).val() : $('#' + _fieldId + '_' + rowindex).val(); fnCallBack(_fieldId, _rowIndex, _value); oldWfbrowvaluechange(obj, fieldid, rowindex); }; // 浏览按钮(时间) window.onWorkFlowShowTime = function(spanname, inputname, ismand, callBackFn) { oldOnWorkFlowShowTime(spanname, inputname, ismand, function(){ var fieldIdInfo = inputname.split('_'); _fieldId = fieldIdInfo[0]; _rowIndex = fieldIdInfo[1]; _value = $('#' + inputname).val(); fnCallBack(_fieldId, _rowIndex, _value); callBackFn(); }); }; };
如何使用:
$(document).ready(function(){ ECSTM.workflowId = $('input[name=workflowid]').val(); ECSTM.nodeId = $('input[name=nodeid]').val(); // 获取加班时数需要的字段,申请人,日期,开始时间,结束时间,外出加班,扣除就餐时间 ECSTM.getHoursFields = ['field5943', 'field5946', 'field5947', 'field5948', 'field5952', 'field5953']; // 表单字段值改变回调函数 ECSTM.addFormValueChangeEvent(function(_fieldId, _rowIndex, _value){ // 如果是“HR004-加班申请流程 > 创建”节点 if (ECSTM.nodeId == '207') { if (ECSTM.getHoursFields.indexOf(_fieldId) >= 0) { console.log('计算加班时间'); } } }); });