婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于ajax html實現文件上傳技巧總結

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

熱門標簽:越南河內地圖標注 云呼外撥網絡電話系統 ai機器人電銷資源 機器人電銷騙局揭秘 騰訊地圖標注位置能用多久 硅語電話機器人公司 超級大富翁地圖標注 個人怎樣在百度地圖標注地名 地圖標注項目怎么樣

引語:大家都知道,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提交的過程?! ?br />

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

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

您可能感興趣的文章:
  • HTML5 Ajax文件上傳進度條如何顯示
  • javascript HTML5文件上傳FileReader API
  • javascript html5移動端輕松實現文件上傳
  • 基于javascript html5實現多文件上傳
  • 基于HTML5 Ajax實現文件上傳并顯示進度條
  • js HTML5 Ajax實現文件上傳進度條功能
  • Jquery結合HTML5實現文件上傳
  • 使用PHP和HTML5 FormData實現無刷新文件上傳教程
  • asp.net html控件的File控件實現多文件上傳實例分享
  • asp.net HTML文件上傳標簽

標簽:遼源 舟山 林芝 邢臺 鄭州 海南 內蒙古 洛陽

巨人網絡通訊聲明:本文標題《基于ajax html實現文件上傳技巧總結》,本文關鍵詞  基于,ajax,html,實現,文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于ajax html實現文件上傳技巧總結》相關的同類信息!
  • 本頁收集關于基于ajax html實現文件上傳技巧總結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久不见久久见免费视频7| 日本vs亚洲vs韩国一区三区二区| 亚洲精品乱码久久久久久久久| 久草精品在线观看| 精品国产污网站| 精品一区二区免费| 久久精品一二三| 国产福利一区二区三区| 国产午夜精品福利| 成人蜜臀av电影| 成人免费在线视频| 欧美性色黄大片| 午夜精品在线看| 久久综合色天天久久综合图片| 国产成人免费视频精品含羞草妖精| 中文字幕+乱码+中文字幕一区| 精品国产精品网麻豆系列| 国产在线视频精品一区| 国产精品国产三级国产普通话99| 欧美日韩一二三区| 国产精品综合二区| 一区二区在线观看免费视频播放 | 激情综合色综合久久综合| 欧美本精品男人aⅴ天堂| 国产精品 日产精品 欧美精品| 国产精品天美传媒| 91麻豆精品国产无毒不卡在线观看| 狠狠色狠狠色合久久伊人| 亚洲日本一区二区三区| 欧美大片顶级少妇| 日本国产一区二区| 国产一本一道久久香蕉| 性久久久久久久| 亚洲欧洲一区二区在线播放| 精品伦理精品一区| 欧美日韩三级视频| 成+人+亚洲+综合天堂| 麻豆高清免费国产一区| 亚洲视频免费在线| 亚洲国产高清aⅴ视频| 欧美高清hd18日本| 色综合av在线| 成人短视频下载 | 午夜不卡在线视频| 亚洲人123区| 久久精品这里都是精品| 欧美成人女星排名| 日韩欧美中文一区二区| 欧美色成人综合| 色国产综合视频| 91丨porny丨最新| 成人精品小蝌蚪| 欧美一区二区在线免费播放| eeuss国产一区二区三区| 精品亚洲国产成人av制服丝袜| 亚洲国产三级在线| 亚洲一区二区中文在线| 亚洲另类在线视频| |精品福利一区二区三区| 国产精品久久三区| 亚洲色图清纯唯美| 一区二区三区.www| 亚洲国产va精品久久久不卡综合| 亚洲综合色区另类av| 樱花影视一区二区| 香港成人在线视频| 日韩va亚洲va欧美va久久| 日韩精品欧美精品| 日韩电影网1区2区| 另类调教123区| 国内精品久久久久影院一蜜桃| 免费观看在线综合色| 精品一区二区三区视频| 国产福利91精品一区二区三区| 成a人片亚洲日本久久| av不卡免费在线观看| 一本色道久久综合亚洲91| 欧美日韩视频一区二区| 91精品国产一区二区三区蜜臀 | 精品日韩一区二区三区免费视频| 日韩一区二区三区四区| 久久免费精品国产久精品久久久久| 久久人人超碰精品| 国产精品国产三级国产有无不卡| 一区二区三区成人在线视频| 免费成人在线网站| 成人自拍视频在线观看| 日本韩国精品在线| 欧美一级在线观看| 日本一区免费视频| 国产成人亚洲综合a∨婷婷| 成人性生交大片| 欧美羞羞免费网站| 久久综合资源网| 亚洲六月丁香色婷婷综合久久| 美美哒免费高清在线观看视频一区二区 | 成人av影视在线观看| 91蜜桃传媒精品久久久一区二区| 欧美日韩国产免费| 欧美国产成人在线| 日韩精品每日更新| 99精品视频一区二区| 91精品国产一区二区三区蜜臀| 国产精品无圣光一区二区| 亚洲电影激情视频网站| 丁香天五香天堂综合| 欧美疯狂性受xxxxx喷水图片| 国产精品视频一二| 久久 天天综合| 欧美精品日韩精品| 亚洲黄一区二区三区| 岛国精品在线播放| 久久看人人爽人人| 蜜臀国产一区二区三区在线播放| 色狠狠av一区二区三区| 国产精品福利在线播放| 国产精品一二三区| 日韩精品一区二区在线| 亚洲成人综合视频| 在线观看日韩电影| 亚洲精选视频免费看| 99re成人在线| 亚洲图片另类小说| 成人免费电影视频| 国产精品素人视频| 成人网在线免费视频| 国产欧美精品一区| 国产成人鲁色资源国产91色综 | 国产不卡一区视频| 2023国产精品| 久久se精品一区二区| 日韩欧美高清在线| 蜜桃久久久久久| 久久综合视频网| 国产成人精品三级麻豆| 中文字幕乱码久久午夜不卡| 国产麻豆成人精品| 日本一二三不卡| 91精品国产综合久久蜜臀| 亚洲1区2区3区4区| 欧美精品第1页| 久久精品国产**网站演员| 91精品国产一区二区| 久久精品噜噜噜成人av农村| 精品国产1区二区| 成人综合婷婷国产精品久久免费| 国产精品你懂的在线欣赏| 91日韩一区二区三区| 亚洲福中文字幕伊人影院| 欧美日韩一区在线| 久久精品国产亚洲一区二区三区| 亚洲精品在线电影| 国产成a人亚洲精| 亚洲天堂精品视频| 欧美日韩中字一区| 久久疯狂做爰流白浆xx| 国产亚洲成年网址在线观看| 91丝袜高跟美女视频| 日韩va亚洲va欧美va久久| 国产三级三级三级精品8ⅰ区| 国产乱码精品一区二区三区忘忧草| 国产精品乱人伦一区二区| 欧美性淫爽ww久久久久无| 美女视频第一区二区三区免费观看网站 | 日本在线不卡视频| 亚洲精品一区二区三区福利| 成人毛片老司机大片| 亚洲超丰满肉感bbw| 欧美一区二区美女| 国产69精品一区二区亚洲孕妇| 亚洲免费在线播放| 日韩区在线观看| 91久久精品一区二区| 麻豆免费精品视频| 亚洲色图20p| 欧美变态tickle挠乳网站| 懂色av噜噜一区二区三区av| 午夜精品久久久久久久| 欧美精品一区二区久久婷婷| 国产毛片一区二区| 性欧美大战久久久久久久久| 精品1区2区在线观看| 欧美性大战xxxxx久久久| 国产最新精品免费| 中文字幕一区在线观看| 日韩欧美资源站| 欧美日韩高清影院| 99国产精品久久久久| 老司机精品视频线观看86 | 国产一区在线看| 99国产精品久久久久久久久久 | 国产精品夜夜嗨| 五月激情综合网| 亚洲裸体xxx| 亚洲欧美综合另类在线卡通| 久久午夜色播影院免费高清| 色婷婷av一区二区| 国产成人在线观看| 蜜臀av一区二区三区| 午夜视黄欧洲亚洲|