Jquery: изменить событие для входного файла в IE - PullRequest
36 голосов
/ 05 марта 2010

У меня есть форма для загрузки файлов, и она должна запустить отправку после выбора файла.

В FireFox / Chrome все идет хорошо, и отправляет форму после выбора файла, но я не могу сделатьэто в Internet Explorer.

Уже пробовал с click / propertychange, но ничего не происходит.Некоторый код, который я уже пробовал:

$("#attach").attr("onChange", "alert('I changed')");
$("#attach").live($.browser.msie? 'propertychange': 'change', function(e) { ... });

Этот входной файл создается на лету;из-за этого я использую .live(), чтобы связать событие.

Есть предложения?

Ответы [ 15 ]

1 голос
/ 18 января 2011

В IE событие onchange прекрасно работает, когда оно заполняется непосредственно в html-тег. Как:

<input type="file" onchange="uploader.upload()" />
0 голосов
/ 14 апреля 2016

Посмотрите на эти скрипки http://jsfiddle.net/uP7A9/531/

HTML:

<input type="file" name="PicturePath" id="fileUpload" accept=".png,.jpg,.jpeg,.gif,.tif" />

jQuery:

$("input[type=file]#fileUpload").on("change", function () {
    alert('hi')
});

работает для всех протестированных браузеров.

0 голосов
/ 22 октября 2012

jQuery, похоже, не распознает событие propertychange. Я добавил его в узел DOM, используя IE attachEvent().

var userChoseFile = function($input) {
    // ...
}

var $input = $(/* your file input */);
$input[0].attachEvent('onpropertychange', function() { 
    userChoseFile($input);
});
0 голосов
/ 09 июня 2011
$("#attach").attr("onChange", "alert('I changed')");

Это работает в IE, но если вы хотите эмулировать "живое" поведение, вы должны добавить атрибут "onChange" к каждому новому элементу при создании его.

0 голосов
/ 30 апреля 2010

Я могу подтвердить, по крайней мере, что он работает только после того, как происходит размытие, аналогично радио и флажку в IE. Мне, вероятно, придется добавить какой-то визуальный элемент, чтобы пользователь мог щелкнуть и сообщить мне, когда он выбрал свой файл.

неточным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...