2012-06-21 7 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, когда я изменил идентификатор входа файла, чтобы соответствовать тому, что было в коде (хотя, очевидно, вы можете изменить 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 - это часть, которая не работает, но обработчик события изменения и загрузка «отлично работает» - вы говорите, что на самом деле это наоборот? Вы можете попробовать '$ ('# photoimg'). Change (...' вместо '$ ('# photoimg'). Live ('change' ...' - не уверен в IE9, но я уверен в более старом IE событие изменения не пузырилось, что означало бы, что он не будет работать с '.live()'. – nnnnnn

Смежные вопросы