form ajaxSubmit上传excel文件问题
摘要前端页面上传excel文件到后台解析后,将数据传送到前端页面进行展示。上传文件用jquery-form.js中的ajaxSubmit,在此过程中遇到的一些问题,将解决的方法记录下来,希望对以后有同样问题的朋友们有所帮助。如果有什么不对的地方请斧正。
用input file,但浏览器自带的选择文件A按钮很难看,与整体的页面风格不合,于是自己写了一个B按钮,将A按钮用opacity:0隐藏于B之外。然后为B按钮附上一个事件,当点击B时,B去触发A的点击事件,从而达到点击上传选择文件事件。再由A去触发ajaxSubmit事件。看似这个问题就这样被解决了。当提交测试时,浏览器兼容问题暴露出来了。主要是IE9版本以下,不允许这样的访问,报SCRIPT5:拒绝访问。
没办法得换成将A隐藏于B之上,当点击B时,实际是点的A。这样又带来了一个新问题:当移动到按钮上时,鼠标显示的是箭头,而不是手型,也没有鼠标移动上的效果。因为A覆盖了B的属性。给A加上cursor:poi nter样式,IE和火狐都认可,但谷歌不认可。幸好input file后面还有一个“未选择任何文件”的文本C。将C偏移将到B上,这时B按钮上的手型出来了,几个浏览器都OK,但又出现三个问题:
1.
IE10以下版本选择文件后,后端解析后返回到前端,IE出现打开、保存和取消按钮,就像下载一样。post返回的报文体是map,将其转换成s tring主OK了
2.
3.
A按钮偏移了,IE上当把鼠标移动到其上是还是显示的手型。解决办法,另写一个div去覆盖那部分。
4.
5.
鼠标移动到上面时,没有变色效果。解决办法:给input file标签添加o nMouseOver和onMouseOut事件去改变B的颜色。
6.
以上全是文字描述,以下贴出部分代码:
页面代码
浏览添加1
="mouseOver();" onMouseOut="mouseOut();" style="cursor: poin ter; width:184px;height: 31px; margin:-31px 0px 0px 0px; opacit y: 0;font-size: 21px;position: absolute; z-index: 2;">
js代码
function mouseOver(){
$("#emp_files").addClass("but-orange");//更改B的颜色
}
function mouseOut(){
$("#emp_files").removeClass("but-orange");
}
$("#signupForm").ajaxSubmit({//提交文件
type:"post",
dataType:"json",
url:"collectFee/uploadFile",
contentType: 'application/json;charset=UTF-8',
success:function(ret){}
});
其实,可以用ajaxfileupload.js插件,来完成以上动作。