2014-02-10 70 views
2

以下js代碼是針對html5多個文件選擇的[重複],在瀏覽器中不起作用,之後多次選擇同名文件。爲什麼選擇的多個文件在鉻瀏覽器上不起作用?

對於EX:選擇文件admin.png兩次或多次串聯。它只是第一次提醒。

DEMO(這並不只在Chrome瀏覽器中工作):http://jsfiddle.net/s9mt4/

function doClick() { 
    var el = document.getElementById("fileElem"); 
    if (el) { 
     el.click(); 
    } 
} 
function handleFiles(files) { 
    var d = document.getElementById("fileList"); 

var elementArray = document.getElementsByClassName("ImgNameUp"); 
var ReValue = true; 
for (var i = 0; i < elementArray.length; ++i){ 
    if(elementArray[i].innerHTML == files[0].name){ 
     ReValue = false; 
    } 
} 
$('.ImgNameUp2').append('<div class="ImgNameUp">'+files[0].name+'</div>') 
    if (ReValue) { 
     alert('true'); 
    } else { 
     alert('false'); 
    } 
} 

我該怎麼辦,在代碼工作的權利的變化?

+1

您可以發佈您的標記呢? – stackErr

+0

你說它不適用於鉻。你是否也說過它可以在其他瀏覽器中工作?或者是您正在測試的唯一瀏覽器。它現在寫的方式,我希望它在每個支持多個文件選擇的瀏覽器中提醒一次。 –

+0

在Firefox中測試,它的工作。這個問題出現在chrome –

回答

1

您輸入的字段正在偵聽onchange事件以觸發javascript。

根據W3C's document

onchange事件當控件失去輸入焦點,自獲得焦點

其 價值已被修改,如果你嘗試上傳同一文件發生時,文件輸入的值不會改變,所以不會觸發該功能。我認爲Chrome是唯一實現「正確」的瀏覽器。

如果您要上傳兩次,清除文件的輸入值:

function doClick() { 
    var el = document.getElementById("fileElem"); 
    $(el).val(null); // <-- this line 
    if (el) { 
     el.click(); 
    } 
} 

http://jsfiddle.net/s9mt4/2/

+0

謝謝你我的朋友。 –

相關問題