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

vue中input type=file上傳后@change事件無(wú)效的解決方案

 更新時(shí)間:2023年05月25日 10:27:40   作者:高效編程  
這篇文章主要介紹了vue中input type=file上傳后@change事件無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

input type=file上傳后@change事件無(wú)效的解決

為什么@change事件會(huì)無(wú)效?

綁定事件無(wú)效的問(wèn)題,不僅僅是Vue中才會(huì)出現(xiàn)的,寫原生js時(shí)同樣是上傳完文件后將無(wú)法觸發(fā)事件,簡(jiǎn)單查閱資料,似乎與上傳的DOM組件相關(guān),因項(xiàng)目緊急也沒(méi)有深究。

怎么解決事件不觸發(fā)的問(wèn)題?

網(wǎng)上大多文章說(shuō)是要移除<input type='file' id='demo'\>再通過(guò)JS動(dòng)態(tài)添加,這樣確實(shí)可以解決問(wèn)題,vue 中也有很多文章說(shuō) 通過(guò) v-if ,我試過(guò)之后發(fā)現(xiàn)v-if也不生效了

借助jQuery重新添加事件,可以解決

我們?cè)谏蟼魑募幚硗瓿珊?,重新添加事?/p>

$("#demo").on("change",function);

將input 選擇的文件置空(初始化)

document.getElementById("demo").value='';

input的type=file觸發(fā)的相關(guān)事件

今天突然用到input相關(guān)的事件,突然發(fā)現(xiàn)自己還沒(méi)有總結(jié)過(guò)input相關(guān)事件的運(yùn)行原理。而且我還竟然翻api去了解了,所以,為了記恨自己,就寫了相關(guān)與input相關(guān)的事件運(yùn)行的過(guò)程。

添加了一些相關(guān)的方法測(cè)試了一下。這一節(jié)首先介紹一個(gè)input的type=file的運(yùn)行流程。

我們書寫了mousedown,mouseup,click,input,change,focus,blur綁定到了input上面,模擬點(diǎn)擊選擇了一個(gè)文件,觸發(fā)事件的流程是下面這樣的:

  • (1)mousedown
  • (2)focus
  • (3)mouseup
  • (4)click
  • (5)blur
  • (6)focus
  • (7)change

首先觸發(fā)了鼠標(biāo)按下事件,然后就是焦點(diǎn)到了input上面,然后鼠標(biāo)抬起,觸發(fā)click點(diǎn)擊事件,失去焦點(diǎn)以后彈出了文件選擇框,選中文件以后觸發(fā)焦點(diǎn),最后觸發(fā)的change事件。

如果你沒(méi)有選擇文件的話,直接點(diǎn)擊取消的話,就不會(huì)觸發(fā)change事件。

所以說(shuō),如果要監(jiān)聽input 的type=file的內(nèi)容變更事件的話,最好直接用change事件去監(jiān)聽。

附上案例代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="file" id="input">
</body>
<script>
    document.getElementById("input").addEventListener("focus",function () {
        console.log("focus");
    });
    document.getElementById("input").addEventListener("mousedown",function () {
        console.log("mousedown");
    });
    document.getElementById("input").addEventListener("mouseup",function () {
        console.log("mouseup");
    });
    document.getElementById("input").addEventListener("input",function () {
        console.log("input");
    });
    document.getElementById("input").addEventListener("change",function () {
        console.log("change");
    });
    document.getElementById("input").addEventListener("blur",function () {
        console.log("blur");
    });
    document.getElementById("input").addEventListener("click",function () {
        console.log("click");
    });
</script>
</html>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue.js學(xué)習(xí)之遞歸組件

    vue.js學(xué)習(xí)之遞歸組件

    最近學(xué)習(xí)vue.js有一段時(shí)間了,使用vue做了一套后臺(tái)管理系統(tǒng),其中使用最多就是遞歸組件,也因?yàn)樽约簩?duì)官方文檔的不熟悉使得自己踩了不少坑,所以今天寫出來(lái)和大家一起分享。有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • Vue中this.$refs的使用及說(shuō)明

    Vue中this.$refs的使用及說(shuō)明

    Vue中this.$refs用于訪問(wèn)通過(guò)ref注冊(cè)的元素或組件,需在mounted后使用,可在JS操作DOM或調(diào)用子組件方法,注意避免模板中直接使用
    2025-08-08
  • 詳解Vue.js基于$.ajax獲取數(shù)據(jù)并與組件的data綁定

    詳解Vue.js基于$.ajax獲取數(shù)據(jù)并與組件的data綁定

    這篇文章主要介紹了詳解Vue.js基于$.ajax獲取數(shù)據(jù)并與組件的data綁定,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • vue使用高德地圖實(shí)現(xiàn)添加點(diǎn)標(biāo)記和獲取點(diǎn)擊位置信息的示例代碼

    vue使用高德地圖實(shí)現(xiàn)添加點(diǎn)標(biāo)記和獲取點(diǎn)擊位置信息的示例代碼

    這篇文章主要介紹了vue使用高德地圖實(shí)現(xiàn)添加點(diǎn)標(biāo)記和獲取點(diǎn)擊位置信息的示例代碼,文中補(bǔ)充介紹了高德vue-amap使用(一)標(biāo)記點(diǎn)位獲取地址及經(jīng)緯度,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-01-01
  • 深入淺析Vue中的 computed 和 watch

    深入淺析Vue中的 computed 和 watch

    computed 計(jì)算屬性是通過(guò)屬性計(jì)算得來(lái)的屬性,watch屬性變化,就會(huì)觸發(fā)監(jiān)聽的函數(shù)。下面通過(guò)本文給大家介紹Vue中的 computed 和 watch,感興趣的朋友一起看看吧
    2018-06-06
  • Vue3中多個(gè)彈窗同時(shí)出現(xiàn)的解決思路

    Vue3中多個(gè)彈窗同時(shí)出現(xiàn)的解決思路

    這篇文章主要介紹了Vue3中多個(gè)彈窗同時(shí)出現(xiàn)的解決思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue3前端導(dǎo)出excel表格的兩種實(shí)現(xiàn)方法

    vue3前端導(dǎo)出excel表格的兩種實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于vue3前端導(dǎo)出excel表格的兩種實(shí)現(xiàn)方法,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-11-11
  • Vue實(shí)現(xiàn)按鈕級(jí)權(quán)限方案

    Vue實(shí)現(xiàn)按鈕級(jí)權(quán)限方案

    這篇文章主要介紹了Vue按鈕級(jí)權(quán)限方案,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Vue+Element實(shí)現(xiàn)動(dòng)態(tài)生成新表單并添加驗(yàn)證功能

    Vue+Element實(shí)現(xiàn)動(dòng)態(tài)生成新表單并添加驗(yàn)證功能

    這篇文章主要介紹了Vue+Element實(shí)現(xiàn)動(dòng)態(tài)生成新表單并添加驗(yàn)證功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Vue后臺(tái)管理系統(tǒng)之實(shí)現(xiàn)分頁(yè)功能示例

    Vue后臺(tái)管理系統(tǒng)之實(shí)現(xiàn)分頁(yè)功能示例

    本文主要介紹了Vue后臺(tái)管理系統(tǒng)之實(shí)現(xiàn)分頁(yè)功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論

兴业县| 斗六市| 乐至县| 凤阳县| 东乌| 黄冈市| 稷山县| 海兴县| 勐海县| 北宁市| 武定县| 武强县| 阳谷县| 梨树县| 伊宁县| 隆子县| 广东省| 金昌市| 长乐市| 郴州市| 太白县| 马边| 六安市| 永福县| 色达县| 云林县| 沙湾县| 达拉特旗| 商河县| 若尔盖县| 台中市| 东山县| 濉溪县| 义乌市| 浦江县| 榆树市| 淮安市| 遂昌县| 忻州市| 定兴县| 巩留县|