亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)的,寫(xiě)原生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去了解了,所以,為了記恨自己,就寫(xiě)了相關(guān)與input相關(guān)的事件運(yùn)行的過(guò)程。

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

我們書(shū)寫(xiě)了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)有選擇文件的話(huà),直接點(diǎn)擊取消的話(huà),就不會(huì)觸發(fā)change事件。

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

附上案例代碼

<!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)文章

  • VueJS如何引入css或者less文件的一些坑

    VueJS如何引入css或者less文件的一些坑

    本篇文章主要介紹了VueJS如何引入css或者less文件的一些坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Vue常用指令V-model用法

    Vue常用指令V-model用法

    本篇文章主要介紹了Vue常用指令_V-model用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Vue.js axios響應(yīng)攔截如何獲取返回狀態(tài)碼

    Vue.js axios響應(yīng)攔截如何獲取返回狀態(tài)碼

    這篇文章主要介紹了Vue.js axios響應(yīng)攔截如何獲取返回狀態(tài)碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vxe-table?實(shí)現(xiàn)?excel?選擇一個(gè)單元格拖拽自動(dòng)復(fù)制新的單元格(示例代碼)

    vxe-table?實(shí)現(xiàn)?excel?選擇一個(gè)單元格拖拽自動(dòng)復(fù)制新的單元格(示例代碼)

    vxe-table是一款強(qiáng)大的表格組件,支持Excel風(fēng)格的操作,通過(guò)鼠標(biāo)右下角的擴(kuò)展按鈕,用戶(hù)可以拖拽選擇單元格并自動(dòng)復(fù)制內(nèi)容到擴(kuò)展區(qū)域的所有單元格中,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-01-01
  • vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    這篇文章主要介紹了vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • vue el-table字段點(diǎn)擊出現(xiàn)el-input輸入框,失焦保存方式

    vue el-table字段點(diǎn)擊出現(xiàn)el-input輸入框,失焦保存方式

    這篇文章主要介紹了vue el-table字段點(diǎn)擊出現(xiàn)el-input輸入框,失焦保存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue3插件json2ts的具體使用

    vue3插件json2ts的具體使用

    本文主要介紹了vue3插件json2ts的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決

    vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決

    這篇文章主要介紹了vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue echarts 實(shí)現(xiàn)離線(xiàn)中國(guó)地圖的示例代碼(細(xì)化到省份)

    Vue echarts 實(shí)現(xiàn)離線(xiàn)中國(guó)地圖的示例代碼(細(xì)化到省份)

    這篇文章主要介紹了Vue echarts 實(shí)現(xiàn)離線(xiàn)中國(guó)地圖,細(xì)化到省份,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 利用Vue.js+Node.js+MongoDB實(shí)現(xiàn)一個(gè)博客系統(tǒng)(附源碼)

    利用Vue.js+Node.js+MongoDB實(shí)現(xiàn)一個(gè)博客系統(tǒng)(附源碼)

    本文主要介紹了利用Vue.js+Node.js+MongoDB實(shí)現(xiàn)一個(gè)博客系統(tǒng),這個(gè)博客使用Vue做前端框架,Node+express做后端,數(shù)據(jù)庫(kù)使用的是MongoDB。實(shí)現(xiàn)了用戶(hù)注冊(cè)、用戶(hù)登錄、博客管理、文章編輯、標(biāo)簽分類(lèi)等功能,需要的朋友可以參考學(xué)習(xí)。
    2017-04-04

最新評(píng)論