目录
1、描述及效果
1.1 描述
例1:在主表实现勾选check框计分,满分10分,共10个check框,每勾选一个check框计1分。
例2:在主表实现勾选check框计分,满分10分,共7个check框,每勾选一个check框计(10/7)分。
1.2 效果
1.2.1 例1效果图
示例图1-1:
1.2.2 例2效果图
示例图1-2:
2、思路
使用JQurey “:checked”选择器,获取主表选取所有选中check框;每选中一个check框,check框“.length”值依次递增,取消选中也会依次递减,这样就能得到所选中check框的总数。
3、步骤
3.1 本次使用E9流程表单前端接口API介绍
具体《E9流程表单前端接口API》详情,请参考泛微官方文献,本篇只介绍需要用到的API。
3.1.1 表单字段值变化触发事件
字段值变化即会触发所绑定的函数,可多次绑定
bindFieldChangeEvent: function(fieldMarkStr,funobj)
参数说明
参数 | 参数类型 | 必须 | 说明 |
---|---|---|---|
fieldMarkStr | String | 是 | 绑定字段标示,可多个拼接逗号隔开,例如:field110(主字段),field111_2(明细字段)…… |
funobj | Function | 是 | 字段值变化触发的自定义函数,函数默认传递以下三个参数,参数1:触发字段的DOM对象,参数2:触发字段的标示(field27555等),参数3:修改后的值 |
样例:
WfForm.bindFieldChangeEvent("field27555,field27556", function(obj,id,value){
console.log("WfForm.bindFieldChangeEvent--",obj,id,value);
});
特别注意:
//如果字段绑定事件,事件内改变本字段的值,需要setTimeout延时下
WfForm.bindFieldChangeEvent("field111", function(obj,id,value){
window.setTimeout(function(){
WfForm.changeFieldValue("field111",{value:"修改本字段值需要延时"});
}, 10);
WfForm.changeFieldValue("field222",{value:"修改非本字段不需要延时"});
});
3.2 上代码
3.2.1 例1代码
WfForm.bindFieldChangeEvent("field35234,field35235,field35236,field35237,field35238,field35239,field35240,field35241,field35242,field35243", function(obj,id,value){
var checkedNumber = $(":checked").length;//获取已选中check框
$("#field35244").val(checkedNumber);//将已选中check框“.length”赋值到“check框总分”
});
3.2.2 例2代码
WfForm.bindFieldChangeEvent("field35234,field35235,field35236,field35237,field35238,field35239,field35240", function(obj,id,value){
var totalScore = 10 / 7;//声明变量值,总分为10分,共7个check框
var checkedNumber = $(":checked").length;//获取已选中check框
var checkedTotalScore = totalScore * checkedNumber;//计算分数
$("#field35244").val(checkedTotalScore );//将已选中check框“.length”赋值到“check框总分”
});
4、总结
JQurey “:checked”选择器,获取的是主表所有选中check框,这也就限制了此方法只适合用于像效果图这样的需求。如果主表中有着其他不需要计分的check框,或者有100个check框拆分成两个部分来单独计分,此方法就不能满足了。
有大神路过,望指点一二。
再会!