我'製作'這片jQuery + html來完成以下內容:
有一個佔位符圖像,用戶可以點擊,導致文件選擇對話框打開。一旦選擇了文件,相應的多部分表單就會上傳到服務器。我試圖模仿此文件上傳的AJAX行爲,所以我也使用一個不可見的iframe來接收服務器響應。
讓我首先提出的代碼,因此它會更容易說明問題當模擬輸入=文件點擊時使用jQuery奇怪的IE小故障
jQuery("#myInput").change(function() { // Submit form upon file selection
// alert("myInput.val() = " + $('#myInput').val()); // alert 1
$('#form1').submit();
// alert("myInput.val() = " + $('#myInput').val()); // alert 2
});
<form id="form1" action="/do_upload.php" method="post" enctype="multipart/form-data" target="target_frame">
<input id="myInput" type="file" name="userfile" /><br>
</form>
<img src="/img/placeholder.png" onclick="$('#myInput').click();" >
<iframe id="target_frame" name="target_frame" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
代碼工作完全在新的Chrome/FF/Safari瀏覽器。 (有趣的是,如果我在「myInput」上設置「visibility:hidden」,它甚至可以工作。顯然這不是一個安全問題)。但是,IE 9和10都顯示相同的行爲:單擊圖像可成功啓動對話框,文件路徑在「警報1」中正確設置,但它在「警告2」中不存在,並且表單未提交。另一方面,直接點擊「myInput」的瀏覽按鈕,會彈出對話框並提交表單。
我完全被這種行爲如何實現的困惑所迷惑!任何建議如何打擊惱人的IE瀏覽器將不勝感激:)
在控制檯中的任何錯誤? –
您可以嘗試在圖像的onclick回調中更改_.click()_到_.change()_,即** onclick =「$('#myInput')。change();」**? –
'click'方法對我來說一直不好。在研究了其他圖書館如何解決這個問題之後,我選擇了使用'input'元素覆蓋圖像的方法,將其設置爲不透明度值,以便人類不可見,但對於不透明度值不可見。所以用戶總是做一個真正的點擊。 –