900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 使用html5+js完成费用报销单的功能

使用html5+js完成费用报销单的功能

时间:2019-08-16 04:00:07

相关推荐

使用html5+js完成费用报销单的功能

费用报销单的功能的前端功能完成

代码

<tr><td nowrap="nowrap" align="center"><center><font style="color:red;">部门:</font></center></td><td colspan="2" align="left"><input name="accountDept" id="accountDept" elementname="报销部门"th:value="${formData?.account_dept == null}?'':${formData.account_dept}" class="scinput"type="text" style="width: 80%" required="required"><input name="accountDeptId" id="accountDeptId" style="display:none;"th:value="${formData?.account_deptid == null?'':formData.account_deptid}"/><img src='static/images/search.png' style='width: 30px;vertical-align: middle;'onclick='javascript:selectDeptUser("accountDept","accountDeptId");'></td></tr><tr id="now"><td nowrap="nowrap" align="center" rowspan="2" id="rowNum"><center><font style="color:red;">报销项目:</font></center></td><td align="center"><center><font >报销事由</font></center></td><td align="center"><center><font >金额(元)</font></center></td><td style="border:none;"><img src='static/images/add_row.png' onclick="javaScript:addrow()" title="增加" ></td></tr><tr id="oldRow"><td align="left"><input type="text" style="width: 100%" class="scinput" name="accountDetailList[0].uses"></td><td align="left"><input type="text" style="width: 90%" class="scinput"onblur="sumMomey(this.name);" onkeyup="clearNoNum(this)" onchange="toFormatAmount(this)"name="accountDetailList[0].singleMoney"></td></tr><tr id="message"><td nowrap="nowrap" align="center" colspan="2"><center><font style="color:red;">合计(元):</font></center></td><td colspan="1" align="left"><input name="allMoney" id="allMoney" elementname="合计(元)"th:value="${formData?.all_money == null?'':formData.all_money}"class="scinput" readonly type="text" style="width:90%;"></td></tr>

JS部分

function sumMomey(value) {var MoneyCount = 0for(var i = 0;i<100;i++){if($("[name='accountDetailList["+i+"].singleMoney']").val()){MoneyCount += parseFloat($("[name='accountDetailList["+i+"].singleMoney']").val());}}console.log("MoneyCount==="+MoneyCount);//赋值$("#allMoney").attr("value",MoneyCount.toFixed(2));}

<script type="text/javascript">debugger;var accountDetailId=$("#dataId").val()var row =$("#rowNum").attr("rowspan")var sum=0;$.ajax({url : "selectAccountDetail.action",type : "POST",dataType : "json",data : {accountDetailId : accountDetailId},success : function(data) {jQuery.each(data, function(i,item){sum=Number(row)+i-1$('#now').after('<tr height="60px">' +'<td align="center">' +'<input class="scinput" style="width: 100%" name="accountDetailList['+i+'].uses" value="'+data[i].uses+'">' +'</td>' +'<td align="l" style="width: 10px">' +'<input class="scinput" style="width: 90%" name="accountDetailList['+i+'].singleMoney" value="'+data[i].singleMoney+'">' +'</td>' +'</tr>')$("#oldRow").remove();$("#rowNum").attr("rowspan",sum+1)})console.log(data)return false;}});$("#print").click(function(){var oldHtml = $("body").html();var box = $(".box").html();$("body").html(box);window.print();$("body").html(oldHtml);location.reload();//刷新当前页面,很重要});</script>

<!--设置金额规则--><script>/*** 字符串非空判断*/function isNullOrWhiteSpace(str) {if (str == null) {return true;}if (typeof (str) == "undefined") {return true;}if (typeof (str) == "string") {return str.trim() === "" || str.trim() == null;}return false;}/*** 保留小数千分位格式化*/function numFormat(num) {var res = num.toString().replace(/\d+/, function (n) {// 先提取整数部分return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {return $1 + ",";});});return res;}/*** 金额change事件*/function toFormatAmount(obj) {var val = $(obj).val();// 空显示"-",可能负数if (!isNullOrWhiteSpace(val.replace(/-/g, ""))) {var valSplitBarLen = val.split("-").length;var valSplitPointLen = val.split(".").length;var sign = "-" == val.substr(0, 1) ? "-" : "";// 最多一个小数点,输入为数字if (valSplitBarLen > 2 || valSplitPointLen > 2 || !isNumber(val.replace(/-/g, "").replace(/,/g, "").replace(/\./g, ""))) {$.notice("请输入正确格式", "danger");$(obj).val("")return;}var resVal = val.replace(/-/g, "").replace(/,/g, "");resVal = parseFloat(resVal).toFixed(2);resVal = numFormat(resVal);resVal = sign + resVal;$(obj).val(resVal);}}/*** 是否是数字*/function isNumber(num) {var patrn = /^\d+(\.\d+)?$/;if (!patrn.exec(num)) {return false;}return true;}/*** 设置为千分位* @param obj*/function clearNoNum(obj){//修复第一个字符是小数点 的情况.if(obj.value !=''&& obj.value.substr(0,1) == '.'){alert('请传入一个合法数');obj.value="";}obj.value = obj.value.replace(/^0*(0\.|[1-9])/, '$1');//解决 粘贴不生效obj.value = obj.value.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数if(obj.value.indexOf(".")< 0 && obj.value !=""){//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额if(obj.value.substr(0,1) == '0' && obj.value.length == 2){obj.value= obj.value.substr(1,obj.value.length);}}}</script>

//增加行function addrow(){var rowNum = $("#rowNum").attr("rowspan");var rownumNew = Number(rowNum)+1;var indexNum = Number(rowNum)-1;var html = $("#otherRow").html();html = html.replaceAll("999",indexNum);$("#message").before(html);laydate.render({elem: '#materDate_'+indexNum //指定元素});$("#rowNum").attr("rowspan",rownumNew);}//删除行function deleterow(obj){var indexNum = $(obj).parent().parent().attr("class");//获取该元素的位置indexNum = indexNum.split("_")[1];var objDom = $(obj).parent().parent().nextAll();//获取该元素后面的同级元素,并遍历for(var i=0;i<objDom.length;i++){if($(objDom[i]).attr("id") != "other"){continue}indexNum = Number(indexNum)+1//替换下面元素的下标,自动减一var objHtml = $(objDom[i]).html();var newNum = indexNum-1;objHtml = objHtml.replaceAll(indexNum,indexNum-1);$(".other_"+indexNum).html(objHtml);$(".tdRow_"+newNum).attr("colSpan","2");var classObj = Number(indexNum)-1;$(".other_"+indexNum).attr("class","other_"+classObj);}//移除该元素$(obj).parent().parent().remove();var rowNum = $("#rowNum").attr("rowspan");var rownumNew = Number(rowNum)-1;$("#rowNum").attr("rowspan",rownumNew);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。