2016-12-03 48 views
0

我在jQuery的一個函數來完成這樣的:在Javascript傳遞整個標籤作爲參數

$('#<%=FileUpload1.ClientID%>').change(function() { 
      var l = document.getElementById('popap'); 
      l.click(); 
     readURL(this); 
     }); 

這裏是readURL功能:

function readURL(input) { 
      if (input.files && input.files[0]) { 
       var reader = new FileReader(); 
       reader.onload = function (e) { 
        $('#before').attr('src', e.target.result); 
       } 

       reader.readAsDataURL(input.files[0]); 
      } 
     } 

正如你可以在更改事件看我將這個作爲參數傳遞給readURL函數,然後在readURL函數內部訪問它的屬性。

我的問題是,如果這個事件是通過點擊一個按鈕觸發的,我怎麼能做到這一點?只有這一次,我需要傳入文件上傳元素中選擇的readURL函數。我試過類似如下的東西:

$('#<%=btnEdit.ClientID%>').click(function (e) { 
        e.preventDefault(); 
        var l = document.getElementById('popap'); 
        l.click(); 
        readURL(document.getElementById("FileUpload1")); 
       }); 

但是這並沒有做任何事情,照片沒有顯示出來......?

我在做什麼錯?

+1

實際的ID,如您正確編碼的第一個代碼示例,是*不* 「FileUpload1」 - 這是'<%= FileUpload1.ClientID%>' 。你必須從ASP中提取實際的ID並使用它,因爲這是瀏覽器看到的標記中使用的實際ID。 – Pointy

+0

是的,這是問題,非常感謝! :) – User987

回答

0

使用ObjectCreateURL,它的速度更快...

function readURL(input) { 
    if (input.files && input.files[0]) { 
    var url = Object.createObjectURL(input.files[0]); 
    $('#before').attr('src', url); 
    } 
}