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

首頁 > 開發 > AJAX > 正文

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

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

引語:大家都知道,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> 

 

以上,主要就是,使用隱藏的input file標簽選擇,選擇文件之后立即ajax提交,最后,整個表單ajax提交的過程?! ?/p>

合理使用一些css, js, 讓你的網頁更自由!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本在线观看天堂男亚洲| 欧美日韩在线视频观看| 九九综合九九综合| 国内成人精品视频| 高清亚洲成在人网站天堂| 亚洲女在线观看| 久久精品亚洲94久久精品| 精品国产一区av| 成人黄色中文字幕| 亚洲a级在线观看| 国内精品一区二区三区| 亚洲人午夜色婷婷| 亚洲a∨日韩av高清在线观看| 亚洲黄色在线观看| 7777精品视频| 成人国产在线激情| 国产精品久久久久免费a∨| 亚洲国产91精品在线观看| 亚洲精品国产精品自产a区红杏吧| 青青在线视频一区二区三区| 国产亚洲欧洲高清| 亚洲色图狂野欧美| 日韩最新中文字幕电影免费看| 欧美日韩国产一区二区三区| 91天堂在线观看| 高清欧美性猛交xxxx| 国产精品成人一区二区| 亚洲aⅴ日韩av电影在线观看| 超碰97人人做人人爱少妇| 国产精品视频色| 精品久久久国产精品999| 久久视频精品在线| 国产婷婷成人久久av免费高清| 国产精品夜间视频香蕉| 亚洲图片欧洲图片av| 欧美成人免费在线观看| 亚洲精品影视在线观看| 超碰精品一区二区三区乱码| 精品亚洲国产视频| 国产乱人伦真实精品视频| 久久韩剧网电视剧| 精品无人区太爽高潮在线播放| 国产mv免费观看入口亚洲| 亚洲成人中文字幕| 欧美最近摘花xxxx摘花| 伊人av综合网| 久久精品99国产精品酒店日本| 国产欧美va欧美va香蕉在| 亚洲四色影视在线观看| 亚洲午夜久久久影院| 日韩中文字幕精品视频| 久久久在线免费观看| 国产免费一区二区三区在线能观看| 精品久久久久久久久久久久久久| 久久久久久18| 国产精品一香蕉国产线看观看| 久久久久久97| 久久久久国色av免费观看性色| 亚洲精品97久久| 97国产在线视频| 日韩专区在线播放| 91精品国产综合久久香蕉的用户体验| 欧美男插女视频| 久久久www成人免费精品张筱雨| 日韩中文综合网| 日韩在线观看视频免费| 欧美极品少妇xxxxⅹ裸体艺术| 成人h视频在线观看播放| 精品久久久久久久久国产字幕| 亚洲国产美女久久久久| 中文字幕亚洲综合久久筱田步美| 国产精品亚洲美女av网站| 91精品视频观看| 日韩精品中文字幕在线播放| 日韩成人小视频| 97国产精品人人爽人人做| 日韩在线播放av| 91九色国产在线| 欧美成人激情视频免费观看| 日韩经典第一页| 国产精品亚发布| 538国产精品一区二区在线| 国产精品igao视频| 成人中心免费视频| 欧美亚洲视频一区二区| 成人乱人伦精品视频在线观看| 日韩免费精品视频| 欧美性猛交视频| 色哟哟亚洲精品一区二区| 亚洲春色另类小说| 精品久久国产精品| 欧美精品电影免费在线观看| 国产午夜精品视频| 欧美精品一本久久男人的天堂| 久久久99久久精品女同性| 中文字幕视频在线免费欧美日韩综合在线看| 欧美日韩免费观看中文| 国产精品劲爆视频| 一级做a爰片久久毛片美女图片| 国产精品扒开腿做爽爽爽的视频| 日韩成人av在线播放| 欧美性xxxx在线播放| 97超级碰在线看视频免费在线看| 欧美重口另类videos人妖| 亚洲va久久久噜噜噜| 久久人人爽人人爽人人片av高请| 青青草精品毛片| 成人美女免费网站视频| 一本色道久久88亚洲综合88| 国产精品电影久久久久电影网| 性夜试看影院91社区| 91高清视频免费观看| 91高清免费视频| 午夜精品久久久99热福利| 国产精品美乳在线观看| 欧美亚洲伦理www| 日韩免费在线播放| 国产精品第七十二页| 日本精品视频网站| 日本午夜在线亚洲.国产| 日本韩国欧美精品大片卡二| 日韩亚洲综合在线| 成人免费自拍视频| 亚洲аv电影天堂网| 国产视频精品久久久| 国产精品久久久久久久久影视| 亚洲另类图片色| 在线播放日韩欧美| 欧美日韩国产精品一区| 日韩中文字幕国产精品| 欧美中文字幕在线观看| 91影院在线免费观看视频| 欧美影院在线播放| 国产在线精品一区免费香蕉| 亚洲精品白浆高清久久久久久| 国产欧美一区二区三区久久| 欧美诱惑福利视频| 欧洲成人在线视频| 最近中文字幕日韩精品| 亚洲jizzjizz日本少妇| 欧美日产国产成人免费图片| 亚洲aⅴ男人的天堂在线观看| 欧美视频中文字幕在线| 亚洲天堂免费视频| 亚洲精品中文字幕av| 91免费的视频在线播放| 久久久中精品2020中文| 欧美丝袜一区二区三区| 清纯唯美亚洲综合| 日韩综合中文字幕| 久久成人精品一区二区三区| 日韩在线视频免费观看| 日韩成人在线电影网| 国产视频观看一区| 成人国产在线视频| 亚洲欧美另类自拍| 久久伊人免费视频| 欧美日韩亚洲国产一区| 国产精品久久久久久久久借妻| 日韩av片永久免费网站| 亚洲国产成人久久综合| 欧美裸体xxxx极品少妇| 国产日韩在线一区| 国产成人精品视频在线|