亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

基于ajax html實現文件上傳技巧總結

2024-09-01 08:27:43
字體:
來源:轉載
供稿:網友

引語:大家都知道,html中上傳文件就一個input,type=file就搞定了。但是,這個標簽的樣式,實在不值得提點什么,要改動他的樣式,恐怕也是較難的。但是其實挺簡單,今天就來說說上傳文件小技巧吧!

1. 怎樣自定義樣式?
1)、只管按照自己喜歡看到的樣式去定義即可,如<a href='javascript:;' class='upload-button'></a>,可以是背景圖片效果,可以是文字指示,總之想怎么改怎么改!有了按鈕,還需要一個文件名容器,用來存放選擇上傳文件時的名字,從而不讓上傳看起來枯澀難懂。

2)、添加真正需要上傳的文件控件,并設置屬性display:none;如 <input type='file' class='hide' />, 這樣就有了真正的上傳文件的地方了。所以,可以說,上傳文件的界面有多漂亮取決你的想象力!

2. 怎樣觸發事件?

這是個重點,觸發的點應該是自己寫的樣式處,而真正起作用的元素卻是隱藏的,但是并不影響它的點擊效果,只需要給它觸發一個點擊事件即可,如$('#target-file').trigger('click');

3. 多選文件?

多文件上傳,只需使用html的一個file的multiple=true即可,當然你也可以選擇第三方的上傳控件,如swfupload,效果是真心不錯的,但是對于不想用的插件的人,就不起作用了。                                                                         

4.  相關插件? 

界面美化其實可以使用jqueryui等插件;
要做一些友好的交互的話,都會用到ajax技術,無刷新切換、異步上傳、提交,最后,其實ajax的路徑也是可以保留的,使用pushState, replaceState 實現 pjax .
表單驗證:validform.js
異步提交文件: jquery.form.js
友好的彈窗提示:layer.js

5. 一點兼容性的問題?

做界面方面的工作,最怕的也是很重要的工作,就是各個瀏覽器之間的兼容性問題,下面主要列幾點供參考:

table寬度的處理方式不一致;
select, input顯示高度不一致;

alert彈窗不一致;

...

6. 演示代碼

<a href="javascript:;" up-type-id="1" class="btn btn-default small-btn switch-upload-method"><span>本地上傳</span></a><a href="javascript:;" up-type-id="2" class="upload-file-instead btn btn-default small-btn switch-upload-method"><span>打包工具</span></a><input type="file" name="apkFiles[]" id="local-upload-real-file" class="upload-file-real hide" response-id="local-upload-container" multiple='true' /><input type="file" name="apkToolFiles[]" id="apk-tool-real-file" class="upload-file-real hide" response-id="apk-tool-container-textarea" /><script> $(function(){  var alertTitle = '系統提示:';  var submitId = '#do-submit';  $('#taskForm').Validform({   btnSubmit: submitId,   tiptype: 1,   ignoreHidden: true,   dragonfly: false,   tipSweep: true,   label: ".label",   showAllError: false,   postonce: true,   ajaxPost: true,   datatype:{   },   beforeCheck:function(curform){   },   beforeSubmit:function(curform){    $('.upload-file-real').attr('disabled', 'disabled');    $(submitId).attr('disabled', 'disabled'); //提交前禁用按鈕    ajaxSubmitForm(curform);    $(submitId).removeAttr('disabled');   //失敗后恢復可提交    return false;   },   submitForm: function(){}      //不再起作用  });  //切換上傳方法  $('.switch-upload-method').off().on('click', function(){//   $(submitId).attr('disabled', 'disabled');   var pObj = $(this).parent().find('.switch-upload-method');   var index = pObj.index(this);   var uploadTypeId = $('#upload-type-id').val();      //上傳方式:1:打包工具;2:本地上傳,0:沒有上傳方式   var uploadType = $(this).attr('up-type-id');   if(parseInt($('#sub-channel-count').html()) > 0){    if(uploadTypeId != uploadType){     layer.alert('還有子渠道包數據,不能完成切換,請先確認清除再切換!');     return false;    }   }   pObj.not(':eq(' + index + ')').removeClass('btn-danger').addClass('btn-default');   pObj.eq(index).removeClass('btn-default').addClass('btn-danger');   if(uploadType == 36){    //local-upload    $('#upload-type-id').val(uploadType);    $('#init-apk-container').show();    $('#apk-tool-container').hide();    $('#upload-main-control').find('.del-it-main').css({display: 'inline-block'});    $('#local-upload-real-file').trigger('click');   }else if(uploadType == 35){   //apk-tool    $('#upload-type-id').val(uploadType);    $('#init-apk-container').hide();    $('#local-upload-container').hide();    $('#upload-main-control').find('.del-it-main').hide();    $('#apk-tool-container').show();   }  });  //本地上傳  $('#local-upload-real-file').off().on('change', function(){   if(!$(this).val()){    return false;   }   file_size = 0;   filepath = $(this).val();   maxFileSize = 30 * 1024 * 1024;   var browserCfg = {};   var ua = window.navigator.userAgent;   if (ua.indexOf("MSIE") >=1 ){    browserCfg.ie = true;   }else if(ua.indexOf("Firefox") >=1 ){    browserCfg.firefox = true;   }else if(ua.indexOf("Chrome") >=1 ){    browserCfg.chrome = true;   }   if (browserCfg.ie) {    var img = new Image();    img.src = filepath;    file_size = img.fileSize;    while (true) {     if (img.fileSize > 0) {      if (img.fileSize > maxFileSize) {       alert("上傳包超過30MB限制,請使用打包工具上傳!");       return false;      }      break;     }    }   } else {    file_size = this.files[0].size;    if (file_size > maxFileSize) {     alert("上傳包超過30MB限制,請使用打包工具上傳!");     return false;    }   }   var responseObjId = $(this).attr('response-id');   var responseObj = $('#' + responseObjId);   $('#taskForm').ajaxSubmit({    url:'/aa/bb/uploadTmpApk',    resetForm: false,    dataType: 'json',    beforeSubmit: function(option){     window.loading = layer.load(2);    },    success: function(data, statusText){     layer.close(window.loading);     if(data.status == 1){      $('#version-identifier').val(data.version);      responseObj.html(data.apkInfoHtml);      responseObj.show();      var delObj = $('#upload-main-control').find('.del-it-main');      delObj.css({'display': 'inline-block'});      $('#sub-channel-count').html(data.apkTotal);      $('#init-apk-container').hide();      $(submitId).removeAttr('disabled');     }else{      layer.alert(data.info, {title: alertTitle});     }    },    error: function(data){     layer.close(window.loading);     layer.alert('未知錯誤,請稍后再試!');    }   });   return false;//防止dialog 自動關閉  });  //打包工具  $('#apk-tool-real-file').off().on('change', function(){   if(!$(this).val()){    return false;   }   var responseObjId = $(this).attr('response-id');   var responseObj = $('#' + responseObjId);   $('#Form').ajaxSubmit({    url:'/aa/bb/uploadTmpApkTool',    resetForm: false,    dataType: 'json',    beforeSubmit: function(option){     window.loading = layer.load(2);    },    success: function(data, statusText){     layer.close(window.loading);     if(data.status == 1){      $('#version-identifier').val(data.version);      responseObj.html(data.infoHtml);      var parentContainer = responseObj.parent().parent(),       nameContainer = parentContainer.find('.apk-name-container'),        delObj = parentContainer.find('.del-it-apk-tool');      nameContainer.html(data.apkName);      nameContainer.attr('title', data.apkName);      $('#apk-tool-file-tmp').html(data.fileInfo);      $(submitId).removeAttr('disabled');     }else{      layer.alert(data.info, {title: alertTitle});     }    },    error: function(data){     layer.close(window.loading);     layer.alert('未知錯誤,請稍后再試!');    }   });   return false;//防止dialog 自動關閉  });  $('.apk-tool-upload-button').on('click', function(){   $('#apk-tool-real-file').trigger('click');  }); });</script>             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频大全| 久久久亚洲影院| 亚洲精品欧美一区二区三区| 激情成人在线视频| 欧美性猛交xxxx免费看久久久| 欧美日韩亚洲高清| 国产91精品久| 亚洲直播在线一区| 日本成人黄色片| 亚洲xxxx在线| 成人xxxxx| 91在线视频一区| 91精品国产九九九久久久亚洲| 亚洲图片在线综合| 国产日韩专区在线| 国产精品久久久久久久久男| 久久久久999| 欧美亚洲在线视频| 91久久精品久久国产性色也91| 91中文字幕一区| 在线亚洲男人天堂| 狠狠色狠色综合曰曰| 97久久伊人激情网| 日韩精品中文字幕在线播放| 国产精品日日摸夜夜添夜夜av| 欧美激情精品久久久久久变态| 国产91在线高潮白浆在线观看| 久久精品国亚洲| 亚洲a级在线播放观看| 国产区精品视频| 亚洲精品国产精品国产自| 亚洲黄色在线观看| 国产精彩精品视频| 欧美日韩精品在线观看| 亚洲男人天堂网| 最好看的2019年中文视频| 欧美午夜xxx| 欧美视频免费在线观看| 亚州欧美日韩中文视频| 色综合天天狠天天透天天伊人| 九色成人免费视频| 日韩成人中文字幕| 亚洲欧美在线免费观看| 91亚洲永久免费精品| 粉嫩老牛aⅴ一区二区三区| 欧美在线视频在线播放完整版免费观看| 最近2019年好看中文字幕视频| 精品国偷自产在线| 国产在线视频91| 国产精品免费久久久久久| 亚洲尤物视频网| 日韩成人在线免费观看| 欧美性猛交xxxx乱大交3| 欧美美最猛性xxxxxx| 啪一啪鲁一鲁2019在线视频| 中文字幕久热精品视频在线| 久久久999精品免费| 欧美日韩一区二区三区| 欧美日韩国产精品一区二区不卡中文| 国产精品女视频| 久久综合国产精品台湾中文娱乐网| 日韩有码在线电影| 久久精视频免费在线久久完整在线看| 亚洲人成电影网站色www| 色婷婷av一区二区三区久久| 久久理论片午夜琪琪电影网| 欧美中文字幕在线观看| 热久久免费国产视频| 宅男66日本亚洲欧美视频| 国产精品久久久久久久9999| 国产自产女人91一区在线观看| 永久免费精品影视网站| 亚洲第一中文字幕| 夜夜嗨av色综合久久久综合网| 久久91亚洲精品中文字幕| 欧美激情精品久久久久久变态| 亚洲天堂av高清| 欧美大片在线看免费观看| 日韩欧美在线字幕| 精品视频久久久久久| 国产精品综合久久久| 91久久国产综合久久91精品网站| 日韩欧美极品在线观看| 91香蕉嫩草神马影院在线观看| 亚洲自拍偷拍视频| 欧美在线xxx| 久久久电影免费观看完整版| 久久久久免费精品国产| 久久久久久高潮国产精品视| 中文字幕国内精品| 亚洲精品免费网站| 久久精品国产96久久久香蕉| 91精品国产沙发| 奇米一区二区三区四区久久| 欧美性xxxx极品hd欧美风情| 成人免费xxxxx在线观看| 亚洲欧美中文字幕在线一区| 国产精品电影在线观看| 日韩美女在线观看| 国产精品亚洲片夜色在线| 午夜精品久久久久久久久久久久| 久久精彩免费视频| 九九热在线精品视频| 国产精品扒开腿做爽爽爽的视频| 日韩高清av一区二区三区| 日韩欧美在线网址| 亚洲欧洲在线看| 欧美日韩国产中字| 日韩有码在线电影| 九九热这里只有精品免费看| 欧美日韩在线另类| 久久久久久亚洲精品| 国产精品一香蕉国产线看观看| 欧美日韩国产中文字幕| 69国产精品成人在线播放| 欧美日韩福利在线观看| 国产精品直播网红| 欧美日韩成人网| 国产精品久久久久久久久久久新郎| 欧美在线国产精品| 日韩经典中文字幕在线观看| 色一情一乱一区二区| 亚洲国产福利在线| 2018中文字幕一区二区三区| 欧美性猛交视频| 国产精品男女猛烈高潮激情| 北条麻妃一区二区三区中文字幕| 日韩欧中文字幕| 日本久久久a级免费| 国产精选久久久久久| 国内精品久久久久| 国外视频精品毛片| 欧美超级免费视 在线| 美女黄色丝袜一区| 欧美裸体视频网站| 亚洲成人在线视频播放| 久久久国产精品亚洲一区| 久久国产精品久久久久久久久久| 精品久久在线播放| 日韩欧美中文在线| 精品久久久久久久久国产字幕| 亚洲成年人在线播放| 日韩激情视频在线播放| 亚洲国内精品视频| 欧美成在线视频| 久久精品国产欧美亚洲人人爽| 日本久久久久亚洲中字幕| 日韩成人在线视频网站| 成人日韩在线电影| 久久精品国产免费观看| 久久精品中文字幕一区| 日韩av不卡在线| 欧美性在线视频| 亚洲视屏在线播放| 亚洲va国产va天堂va久久| 4p变态网欧美系列| 国产日韩欧美综合| 久久久精品在线| 国产精品久久久久av免费| 性日韩欧美在线视频| 亚洲在线免费看| 欧美自拍视频在线观看| 欧美香蕉大胸在线视频观看| 欧美性xxxx极品高清hd直播|