欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js之input[type=file]選擇重復(fù)的文件,無法觸發(fā)change事件問題

 更新時間:2023年05月25日 10:34:57   作者:草字  
這篇文章主要介紹了js之input[type=file]選擇重復(fù)的文件,無法觸發(fā)change事件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

input[type=file]選擇重復(fù)的文件,無法觸發(fā)change事件

選擇文件的時候,瀏覽器會判斷是否跟之前一致,如果一致他就不會重新加載這個文件,避免無謂的加載消耗。

所以我們在不一樣的需求的時候,比如裁剪圖片,無論他是不是相同圖片,都必須讓他觸發(fā)change事件,這樣才能進(jìn)行下一步處理。

解決方法

給input添加原生事件onblur進(jìn)行清空,οnblur="this.value=''" ,blur比change事件的優(yōu)先級要高一點(diǎn)。

代碼:

<input type="file" accept="image/*" οnblur="this.value=''" @change="uploadPhoto" class="uploadImg"/>

解決input file change監(jiān)聽文件(圖片)上傳事件多次觸發(fā)

文件上傳html代碼:

<a name="uploadFile" id="uploadFile" href="javascript:;" rel="external nofollow" >[上傳文件]</a>
<input id="myFile" name="myFile" value="上傳圖片" type="file" accept="application/vnd.ms-excel" style="display: none"/>

在上傳文件時候,通常想要監(jiān)聽文件上傳事件:

    /**
     * 點(diǎn)擊上傳文件,觸發(fā)input type="file"
     */
     $("#uploadFile").click(function () {
        const myFile = $("#myFile")
        // 觸發(fā)
        myFile.click()
        // 監(jiān)聽change事件 
        myFile[0].addEventListener('change', function (e) {
            var filesList = document.querySelector('#myFile').files;
            if(filesList.length==0){ //如果取消上傳,則上傳文件的長度為0
                console.log("沒有上傳任何文件");
                return;
            }else{
                //如果有文件上傳,這在這里面進(jìn)行
                console.log(filesList);
            }
        });
    });

但是結(jié)果一次改變,卻觸發(fā)多次監(jiān)聽:

由于file input出于安全角度,是不允許賦值的,即使是置空,雖然通過給outerHtml賦值可以清空,但僅在ie下起使用。

因?yàn)槿鄙僦每盏姆椒?,用戶異步上傳完畢文件后選擇相同文件時,不會觸發(fā)change,因?yàn)樵谶@種情況下,我們沒有辦法使value(也就是文件路徑)發(fā)生變化。

解決方法是

每次選完文件,就重建此元素,這樣值自然是空的,因?yàn)閏lone不帶值,這樣就是一個全新的file input,每一次選擇,自然各種正常。

    /**
     * 點(diǎn)擊上傳文件,觸發(fā)input type="file"
     */
    $("#uploadFile").click(function () {
        const myFile = $("#myFile")
        // 觸發(fā)
        myFile.click()
        // 監(jiān)聽change事件 
        myFile.unbind().change(function (e) {
            console.log(e)
        })
    });

這樣每上傳一次不同的文件就可以監(jiān)聽到一次改變,符合監(jiān)聽的效果:

總結(jié)

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

相關(guān)文章

  • 利用iscroll4實(shí)現(xiàn)輪播圖效果實(shí)例代碼

    利用iscroll4實(shí)現(xiàn)輪播圖效果實(shí)例代碼

    iScroll 4 這個版本完全重寫了iScroll這個框架的原始代碼。這個項(xiàng)目的產(chǎn)生完全是因?yàn)橐苿影鎤ebkit瀏覽器(諸如iPhone,iPad,Android 這些系統(tǒng)上廣泛使用)。下面這篇文章主要介紹了利用iscroll4實(shí)現(xiàn)輪播圖效果的方法教程,需要的朋友可以參考下。
    2017-01-01
  • JS實(shí)現(xiàn)自適應(yīng)高度表單文本框的方法

    JS實(shí)現(xiàn)自適應(yīng)高度表單文本框的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)自適應(yīng)高度表單文本框的方法,實(shí)例分析了針對IE內(nèi)核與非IE內(nèi)核下的javascript控制文本框樣式的技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-02-02
  • javascript實(shí)現(xiàn)點(diǎn)擊按鈕變色

    javascript實(shí)現(xiàn)點(diǎn)擊按鈕變色

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)點(diǎn)擊按鈕變色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • javascript最基本的函數(shù)匯總

    javascript最基本的函數(shù)匯總

    這篇文章主要給大家匯總介紹了javascript最基本的7個函數(shù),十分的實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • js異步之a(chǎn)sync和await實(shí)現(xiàn)同步寫法

    js異步之a(chǎn)sync和await實(shí)現(xiàn)同步寫法

    本文主要介紹了js異步之a(chǎn)sync和await實(shí)現(xiàn)同步寫法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 微信js-sdk 錄音功能的示例代碼

    微信js-sdk 錄音功能的示例代碼

    這篇文章主要介紹了微信jsdk錄音功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • PhotoSwipe異步動態(tài)加載圖片方法

    PhotoSwipe異步動態(tài)加載圖片方法

    這篇文章主要為大家詳細(xì)介紹了PhotoSwipe異步動態(tài)加載圖片方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JS獲取select-option-text_value的方法

    JS獲取select-option-text_value的方法

    這篇文章主要介紹了JS獲取select-option-text_value的方法,有需要的朋友可以參考一下
    2013-12-12
  • Bootstrap實(shí)現(xiàn)的表格合并單元格示例

    Bootstrap實(shí)現(xiàn)的表格合并單元格示例

    這篇文章主要介紹了Bootstrap實(shí)現(xiàn)的表格合并單元格,涉及bootstrap界面布局相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • javascript對數(shù)組的常用操作代碼 數(shù)組方法總匯

    javascript對數(shù)組的常用操作代碼 數(shù)組方法總匯

    js下數(shù)組也是比較常用的,對數(shù)組元素的處理也是有非常多的方法,這里整理了下,需要的朋友可以參考下。
    2011-01-01

最新評論