2012-06-21 36 views
0

我想製作「圖像上傳腳本」。我不想使用輸入元素。點擊紅色圖像時,系統窗口會出現,您可以選擇圖像文件。不過,這並不在IE瀏覽器9圖像替換輸入元素

jQuery代碼:

// this part of code does not work in IE9 
$('img').click(
    function(){ 
     $('#photoimg').trigger('click'); 
}); 

// this works fine 
$('#photoimg').live('change', function(){ 
    $("#preview").html(''); 
    $("#preview").html('<img src="loader.gif" alt="Uploading...."/>'); 
    $("#imageform").ajaxForm({ 
     target: '#preview', 
     success: function() { 
      alert('IMG was loaded.'); 
     } 
    }).submit(); 
}); 

HTML代碼:

<img id="icon" src="http://ynternet.sk/test2/close_1.jpg"> 

<form id="imageform" method="post" action='upload_file.php'> 
    <input type="file" name="photoimg" id="photoimg" /> 
</form> 
<div id='preview'> </div> 

例子:

http://ynternet.sk/test_4/ 

回答

1

的問題是,你的代碼試圖訪問一個id爲「myfile」的元素,但是你的標記沒有這樣的元素。

它爲我在這兩個IE9和Chrome時,我改變了文件輸入的ID匹配什麼代碼(雖然很明顯,你可以改變JS相匹配的HTML):

<input type="file" name="photoimg" id="myfile" /> 

演示:http://jsfiddle.net/ytcXF/

+0

對不起,它只是複製/粘貼錯誤。請看看新的編輯和例子。 http://ynternet.sk/test_4/ – Patrik

+0

腳本正在jsfiddle上工作,但未在服務器上上傳圖像。由於jsfiddle無法上傳圖片,因此您無法看到問題。 – Patrik

+0

你的代碼中的註釋(在問題中)說img click是不起作用的部分,但是改變事件處理程序和上傳「工作正常」 - 你是否說實際上它是相反的?你可以嘗試'$('#photoimg')。change(...'而不是'$('#photoimg')。live('change'...' - 不確定IE9,但我很確定在較老的IE瀏覽器中,更改事件不會冒泡,這意味着它不會與'.live()'一起工作。 – nnnnnn