泛微OA主表与明细表的js操作

  毕业后工作的第一个项目就是做一个泛微OA的流程。实际上不难但是还是在网上挺少记录这种的。记录一下给以后的自己和刚接触有需要的人吧,第一次写博客,有问题请指出。

实现的功能

1.多个check组成复选框必选至少一个
2.获取明细表的值传给主表
3.根据选择框显示和隐藏元素
4.对明细表的元素添加触发事件(不完善,这个页面响应太慢了导致没及时监听到,只能提交时做判断了,有看到的大佬指导一下)
5.按钮按了之后1s后才能继续点击

特殊的元素

页面按f12或者右键检查之后会发现页面有一堆隐藏的元素,第一次接触完全不知道0.0。
隐藏的元素目前只用到了以下的:
#indexnum0:明细表索引,只有添加时才加,删除时值并不变。
#nodesnum0:明细表行数,添加删除都会变化。
#submitdtlid0: 存在的条目由num+“,”组成的字符串,例如value=“8,11,12”,由0开始记录
ps : 后面的0好像是第一张明细表,第二张应该就是1了

明细表的元素

明细表元素
第一个元素的id是_0,第二个是_1,以此类推,然后可以通过上面的隐藏元素来写js事件

下面就直接贴代码出来看吧。。。

<!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 -->
<script type = "text/javascript" >
	var selectStr = $("#field27826").find("option:selected").val();//获取被选中的选项的值
	if(selectStr = "个人申请"){
		jQuery("#div0button").hide();
	}
	jQuery(document).ready(function() {
		checkCustomize = function() {//提交前执行的函数 
			var nodesnum0 = jQuery("#nodesnum0").val();//行数
			jQuery("#field28444").val(nodesnum0);//主表的值
			//判断复选框是否有勾选
			if ((jQuery("#field27782").attr("checked") == false) && (jQuery("#field27783").attr("checked") == false) && (
					jQuery("#field27784").attr("checked") == false) &&
				(jQuery("#field27785").attr("checked") == false) && (jQuery("#field27786").attr("checked") == false)) {
				alert("请勾选参加理由至少一个复选框!");
				return false;

			} else {
				if ((jQuery("#field27786").attr("checked") == true) && ($("#field27775").val() == null || $("#field27775").val() ==
						"")) {
					alert("请填写其他复选框文本内容");
					return false;
				}
				if(parseInt(jQuery("#nodesnum0").val()) > 1){
					var maxEatFee = jQuery("#field28385").val();//膳食费最大值
					var maxHouseFee = jQuery("#field28383").val();//住宿费最大值
					var submitStr = jQuery("#submitdtlid0").val();//submitdtlid0 value="8,11,12"
					var strs = new Array(); //定义一数组
					strs = submitStr.split(","); //字符分割
					for (i = 1; i < strs.length - 1; i++) // 0 1 2
					{		
						var strEatFee =  jQuery("#field27798" + "_" + strs[i]).val();
						var strHouseFee =  jQuery("#field27799" + "_" + strs[i]).val();
						if(parseFloat(strEatFee) > parseFloat(maxEatFee)) {
							alert("根据公司差旅报销费用规定,膳杂费不可超过" + maxEatFee + "元,请更正数据");
							return false;
						}
						if(parseFloat(strHouseFee) > parseFloat(maxHouseFee)) {
							alert("根据公司差旅报销费用规定,住宿费不可超过" + maxHouseFee + "元,请更正数据");
							return false;
						}
					}
				}
				
				return true;
			}
			
		};
		
		//获取明细表数据传给主表
		jQuery("#indexnum0").bindPropertyChange(function() {//获取申请人中最高的等级值
			var index = jQuery("#indexnum0").val() - 1;
			jQuery("#field27851" + "_" + index).bindPropertyChange(function() {
				var userid = 0;
				if ((jQuery("#field27851" + "_" + index).val()) > userid) {
					userid = jQuery("#field27851" + "_" + index).val();
				}
				jQuery("#field27966").attr("value", userid);
			})
		});

		//根据选择框显示和隐藏div
		jQuery("#field27826").bindPropertyChange(function() {
			var myselect = jQuery("#field27826").val();
			if (myselect == 1) {
				jQuery("#div0button").show();
			} else {
				jQuery("#div0button").hide();
			}
		});
		
		//实际上点的快事件并来不及触发,太卡了,所以又写了提交时的判断(上面)
		jQuery("#indexnum0").bindPropertyChange(function() {//行变化时就触发时间(貌似只有增加时,删除也要用#nodesnum0)
			var index = jQuery("#indexnum0").val() - 1;
			jQuery("#field27798" + "_" + index).bindPropertyChange(function() {
				var maxFee = jQuery("#field28385").val();
				var nowFee = jQuery("#field27798" + "_" + index).val();	
				if(parseInt(nowFee) == 0){
					alert("请先填写前面的资料!");
				}
				if (parseFloat(nowFee) > parseFloat(maxFee)) {
					alert("根据公司差旅报销费用规定,膳杂费不可超过" + maxFee + "元");
					jQuery("#field27798" + "_" + index).val(parseInt(maxFee));
				}
			});
			jQuery("#field27799" + "_" + index).bindPropertyChange(function() {
				var maxFee = jQuery("#field28383").val();
				var nowFee = jQuery("#field27799" + "_" + index).val();	
				if(parseInt(nowFee) == 0){
					alert("请先填写前面的资料!");
				}
				if (parseFloat(nowFee) > parseFloat(maxFee)) {
					alert("根据公司差旅报销费用规定,住宿费不可超过" + maxFee + "元");
					jQuery("#field27799" + "_" + index).val(parseInt(maxFee));
				}
			});
		});
		
		//点击添加按钮后停止1s点击,然而在这里并没有卵用,就学习记录一下	
		jQuery("#nodesnum0").bindPropertyChange(function() {
			$(".addbtn_p").attr("disabled", "disabled");//$addbutton0$这个id实测不能使用原因未知
			setTimeout(function() {
				$(".addbtn_p").removeAttr("disabled");
			}, 1000);//1秒后才能点击
		});	
		
	}); 
	
</script>

  jQuery("#field27782").attr(“checked”) == false;这一块其实更推荐使用prop代替attr,因为后面另一个表单我用attr就不是true和false了,会出现undefined,百度找说是jquery版本问题,但是有两个版本jquery也太奇怪了。。
  OA好像只是我们新人进来的第一个新手村任务,接下来就要做别的了,希望人没事。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值