2016-12-03 5 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 и использовать его, потому что это фактический идентификатор, используемый в разметке, которую видит браузер. – 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); 
    } 
}