上传文件传参无法获取(下拉列表的参数)"/>
layUI上传文件传参无法获取(下拉列表的参数)
废话不说,直接上代码:
//下拉列表-年份var nowyear;function getYear(){nowyear = new Date().getFullYear(); //获取当前年份// var sel = document.getElementById ('sel');//获取select下拉列表var option = '';for ( var i = nowyear; i >= 2018; i--)//获取下拉框的值,从2018年到当前年{option += "<option value="+i+">"+i+"</option>";}$('#sel').html(option);form.render('select');}//获取下拉列表的年份form.on('select(sel)', function(data){nowyear.val(data.value);});upload.render({elem: '#uploadDetailData' //绑定按钮, url: '/payableInfo/uploadDetailData?year='+nowyear, accept: 'file' //普通文件, done: function (res) {if (count != 0) {layer.msg("上传成功! \n成功上传"+count+"条数据 \n耗时"+time+"毫秒", {icon: 6});infoTable();} else {layer.msg("上传失败!", {icon: 5});}}});
在运行时会遇到一个问题,如下图的下拉列表作为参数传到后台
但是,真正跑起来时
url: '/payableInfo/uploadDetailData?year='+nowyear
url后带的参数一直是默认的2019,也就是说一直是默认值,后来咨询了一下大佬,最终给的解释是:upload.render的渲染顺序早于获取下拉列表值,当你还没有获取到下拉列表的值时就已经渲染完了.
因此解决方法就是,要么把最终的参数给他,要么想办法,传一个可以改变的参数.
于是我想到了,把upload.render()嵌套到 form.on(‘select(sel)’, function(data){};发现这样上传按钮直接就不能使用了,于是就有了
最后的解决方法:
我发现从 layui 2.1.0 开始,才有的before属性可供传值
before: function (obj) {this.data = {"nowyear": nowyear}///携带额外的数据
就可以在后台动态获取了!
本篇文章的重点不是使用before,而是说一下不使用before传参数的弊端(手动滑稽)
更多推荐
layUI上传文件传参无法获取(下拉列表的参数)
发布评论