最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jQuery實現(xiàn)input[type=file]多圖預覽上傳刪除等功能

 更新時間:2019年08月02日 11:21:47   作者:lander_xiong  
這篇文章主要介紹了jQuery實現(xiàn)input[type=file]多圖預覽上傳刪除等功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

下面我們了解一下,多圖上傳時,怎么實現(xiàn)預覽、上傳、刪除等功能。下圖是功能實現(xiàn)的預覽效果,雖然樣式有點丑,不過功能還是實現(xiàn)了。話不多說,直接看代碼會更直觀一些。

在這里插入圖片描述

首先定義一下基本格式,樣式代碼自行腦補:

<body>
 <div class="upload-header">
 <input id="upload" type="file" accept="image/*" multiple="multiple">
 <button class="btn">點擊上傳</button>
 </div>
 <div class="img-box">
 <!-- 存放預覽圖片 -->
 </div>
</body>

接著定義看一下具體的js實現(xiàn)代碼,我是基于JQ做的開發(fā),方便DOM的操作。

1. 預覽功能的實現(xiàn)

這里監(jiān)聽input[type=file]的change事件,在回調函數(shù)中,取到暫存區(qū)的文件e.target.files,通過遍歷files 文件屬性,使用FileReader 函數(shù)讀取文件的值,然后使用append方法把圖片放入指定盒子中。備注::FileReader是一種異步文件讀取機制,結合input:file可以很方便的讀取本地文件。

imgPreview: function () {
 var that = this;
 $('.upload-header').on('change', '#upload', function(e) {
  var files = e.target.files;
  if (files.length > 0) {
  for (var i = 0; i < files.length; i++) {
   var reader = new FileReader();
   reader.onload = function () {
   var text = `
    <div class="img-list">
    <img src="${this.result}" alt="">
    <div class="del-img">刪除</div>
    </div>
   `
   $('.img-box').append(text);
   };
   reader.readAsDataURL(files[i]);
   that.filesList.push(files[i]);
  };
  };
 })
 }

2. 圖片刪除功能

這里是使用on方法對預覽的圖片添加點擊事件,這里使用on方法主要是因為on方法對后面添加的dom可以繼續(xù)監(jiān)聽。當需要刪除照片時,直接刪除其圖片的父節(jié)點及以下節(jié)點就可以了。此時記得把暫存區(qū)的文件filesList也要對應刪除。

delImage: function () {
 var that = this;
 $('.img-box').on('click', '.del-img', function () {
  var delStatus = confirm('確認這張圖片刪除嗎?');
  if (delStatus) {
  var index = $(this).parent().index();
  $(this).parent().remove();
  that.filesList.splice(index, 1);
  console.log('我刪除啦', index);
  };
 });
 }

2. 圖片批量上傳功能

圖片上傳我定義了兩個方法,第一方法是點擊上傳后,對所有文件進行遍歷,依次調取上傳的方法(因為用的七牛上傳工具,只支持單個文件上傳,所以采取了遍歷的方式)。第二個方法使用了jq的ajax的post上傳方式,使用FormData實例,添加file屬性進行上傳。因為是批量上傳,所以我使用了定義臨時變量flag 的方式來判斷文件是否都上傳完成,當flag的值與filesList的數(shù)量一致時,就可以判斷所有上傳完成。使用方法比較low,如果其他好的方法可以留言交流。

clickUpload: function () {
 var that = this;
 var filesList = this.filesList;
 $('.btn').on('click', function() {
 that.flag = 0;
 if (filesList.length > 0) {
  for (var i = 0; i < filesList.length; i++) {
  that.upLoadMethod(filesList[i]);
  }
 };
 }) 
},
upLoadMethod: function (file) {
 var that = this;
 var formData = new FormData();
 formData.append('file', file);
 $.ajax({
  type: "post",
  url: 'http://172.16.1.99:8703/file/upload',
  data: formData,
  mimeType: "multipart/form-data",
  dataType: "json",
  async: false,
  cache: false, //上傳文件不需要緩存
  contentType: false, //需設置為false。因為是FormData對象,且已經聲明了屬性enctype="multipart/form-data"
  processData: false, //需設置為false。因為data值是FormData對象,不需要對數(shù)據(jù)做處理
  success: function (response) {
  that.flag += 1;
  if (that.flag === that.filesList.length) {
   console.log('我上傳完成了');
  };
  },
  error: function (err) {
  console.log('上傳失敗');
  }
 });
 },

以下是完整的js代碼,供參考:

<script>
 function UploadFunction (name) {
 this.name = name;
 this.init();
 };
 UploadFunction.prototype = {
 // 初始化
 init: function () {
  this.clickUpload();
  this.imgPreview();
  this.delImage();
 },
 flag: 0,
 filesList: [],
 // 點擊上傳
 clickUpload: function () {
  var that = this;
  var filesList = this.filesList;
  $('.btn').on('click', function() {
  that.flag = 0;
  if (filesList.length > 0) {
   for (var i = 0; i < filesList.length; i++) {
   that.upLoadMethod(filesList[i]);
   }
  };
  }) 
 },
 imgPreview: function () {
  var that = this;
  $('.upload-header').on('change', '#upload', function(e) {
  var files = e.target.files;
  console.log(files);
  if (files.length > 0) {
   for (var i = 0; i < files.length; i++) {
   var reader = new FileReader();
   reader.onload = function () {
    var text = `
    <div class="img-list">
     <img src="${this.result}" alt="">
     <div class="del-img">刪除</div>
    </div>
    `
    $('.img-box').append(text);
   };
   reader.readAsDataURL(files[i]);
   that.filesList.push(files[i]);
   };
  };
  })
 },
 upLoadMethod: function (file) {
  var that = this;
  var formData = new FormData();
  formData.append('file', file);
  $.ajax({
  type: "post",
  url: '這里使用上傳的地址/upload',
  data: formData,
  mimeType: "multipart/form-data",
  dataType: "json",
  async: false,
  cache: false, //上傳文件不需要緩存
  contentType: false, //需設置為false。因為是FormData對象,且已經聲明了屬性enctype="multipart/form-data"
  processData: false, //需設置為false。因為data值是FormData對象,不需要對數(shù)據(jù)做處理
  success: function (response) {
   that.flag += 1;
   if (that.flag === that.filesList.length) {
   console.log('我上傳完成了');
   };
  },
  error: function (err) {
   console.log('上傳失敗');
  }
  });
 },
 delImage: function () {
  var that = this;
  $('.img-box').on('click', '.del-img', function () {
  var delStatus = confirm('確認這張圖片刪除嗎?');
  if (delStatus) {
   var index = $(this).parent().index();
   $(this).parent().remove();
   that.filesList.splice(index, 1);
   console.log('我刪除啦', index);
  };
  });
 }
 }
 var UploadFunction = new UploadFunction('小明刪照片');

總結

以上所述是小編給大家介紹的jQuery實現(xiàn)input[type=file]多圖預覽上傳刪除等功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • JQuery 自定義CircleAnimation,Animate方法學習筆記

    JQuery 自定義CircleAnimation,Animate方法學習筆記

    最近對看了一些JQuery的基礎教程,被JQuery深深的吸引住了,以前用過Extjs,看了JQuery不禁感嘆,javascript還能這么些,真是太神奇了!
    2011-07-07
  • jQuery .tmpl() 用法示例介紹

    jQuery .tmpl() 用法示例介紹

    解決 PHP 拼數(shù)據(jù)這方面的問題而有了 Smarty 這些模版,JavaScript 也可以利用模版來解決這些問題,比如基于 jQuery 的 jquery.tmpl
    2014-08-08
  • jquery獲取a標簽上的href值的示例代碼

    jquery獲取a標簽上的href值的示例代碼

    jquery是一種廣泛使用的javascript庫,獲取a標簽上的href值是一個常見的需求,要獲取a標簽上的href值,只需使用選擇器選擇a元素,并使用attr()方法來獲取href屬性值,以下是一些使用jQuery獲取a標簽上的href值的示例代碼,需要的朋友可以參考下
    2024-05-05
  • zTree 樹插件實現(xiàn)全國五級地區(qū)點擊后加載的示例

    zTree 樹插件實現(xiàn)全國五級地區(qū)點擊后加載的示例

    下面小編就為大家分享一篇zTree 樹插件實現(xiàn)全國五級地區(qū)點擊后加載的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • jquery 驗證用戶名是否重復代碼實例

    jquery 驗證用戶名是否重復代碼實例

    這篇文章主要介紹了jquery驗證用戶名是否重復,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • jQuery操作DOM_動力節(jié)點Java學院整理

    jQuery操作DOM_動力節(jié)點Java學院整理

    這篇文章主要介紹了jQuery操作DOM,下面的DOM操作將圍繞上面的DOM樹進行學習JQueryDOM操作,有興趣的可以了解一下
    2017-07-07
  • jQuery彈出層插件簡化版代碼

    jQuery彈出層插件簡化版代碼

    這個簡化版不能在別的框架彈出層的,所以也就沒有了那個cssurl屬性了,也沒有target 屬性了
    2008-10-10
  • jQuery入門介紹之基礎知識

    jQuery入門介紹之基礎知識

    本文主要給大家介紹了些jQuery的基礎知識,算是一個入門的小知識庫,包含jQuery簡介、對象轉換、以及基本選擇器和層次選擇器等知識點。
    2015-01-01
  • jQuery實現(xiàn)的頁面彈幕效果【測試可用】

    jQuery實現(xiàn)的頁面彈幕效果【測試可用】

    這篇文章主要介紹了jQuery實現(xiàn)的頁面彈幕效果,涉及jQuery事件響應與頁面元素屬性動態(tài)操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • 遮罩層點擊按鈕彈出并且具有拖動和關閉效果(兩種方法)

    遮罩層點擊按鈕彈出并且具有拖動和關閉效果(兩種方法)

    實現(xiàn)點擊按鈕彈出遮罩層,點擊按鈕可以隨意拖動和關閉。接下來,通過本篇文章給大家介紹遮罩層點擊按鈕彈出并且具有拖動和關閉效果,需要的朋友可以參考下
    2015-08-08

最新評論

岢岚县| 清水河县| 五家渠市| 西畴县| 南京市| 江华| 平和县| 双鸭山市| 三亚市| 米泉市| 洞头县| 淮北市| 大竹县| 库伦旗| 万荣县| 和田市| 驻马店市| 齐齐哈尔市| 黄冈市| 旺苍县| 丰城市| 通榆县| 武义县| 平山县| 抚宁县| 深泽县| 紫金县| 偃师市| 磐安县| 若尔盖县| 兖州市| 溧水县| 怀化市| 咸宁市| 兴海县| 惠水县| 常熟市| 陆川县| 丰宁| 龙州县| 轮台县|