2016-12-03 5 views
0

Ich habe eine Funktion in jQuery wie dies getan:Passing gesamten Tag in Javascript als Parameter

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

Und hier ist die readURL Funktion:

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]); 
      } 
     } 

Wie man auf dem Änderungsereignis sehen Ich übergebe dies als ein Parameter an die Funktion readURL und dann Zugriff auf seine Eigenschaften innerhalb der Funktion readURL.

Meine Frage ist, wie würde ich das gleiche tun können, wenn dieses Ereignis auf einen Klick ausgelöst wurde? Nur dieses Mal muss ich die Funktion readURL übergeben, die auf dem Datei-Upload-Element ausgewählt wurde. Ich habe versucht, etwas wie folgt:

Aber das tut nichts wirklich, das Bild wird überhaupt nicht angezeigt ...?

Was mache ich falsch?

+1

Die tatsächliche ID, wie Sie richtig Ihr erstes Codebeispiel codiert wird * nicht * "FileUpload1" - es ist '<% ​​= FileUpload1.ClientID%>' . Sie müssen die tatsächliche ID aus ASP extrahieren und diese verwenden, da dies die tatsächliche ID ist, die in dem Markup verwendet wird, das der Browser sieht. – Pointy

+0

ja das war das Problem, vielen Dank !!! :) – User987

Antwort

0

Verwenden ObjectCreateURL, ist es schneller ...

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