Fileinput и IE8 с jquery? - PullRequest
       2

Fileinput и IE8 с jquery?

0 голосов
/ 22 марта 2011

Привет,

У меня есть несколько элементов типа файла ввода, например:

<input type="file" name="files" id="file0">
<input type="file" name="files" id="file1">
<input type="file" name="files" id="file2">
...

Этот элемент привязан к событию изменения jquery, как это:

$('input[type=file]').change(FileChangeHandler);

FileChangeHandler выглядит следующим образом (не важно, что это важно, но я публикую это другим способом):

function FileChangeHandler() {

            if($(this).val().length > 0){
                UpdateFileInputs();
            }
        }

        function UpdateFileInputs()
        {
            var hiddenClass = 'fileHidden';
            var visibleClass = 'fileVisible';
            var emptyAndVisibleFound = false;

            if(!FileThresholdReached())
            {
                for(var i = 0; i < 10; i++){
                    if($('#fileInput' + i).hasClass(visibleClass)){
                        if($('#file' + i).val().length < 1){ 
                            if(!emptyAndVisibleFound){
                                emptyAndVisibleFound = true;}
                            else{
                                $('#fileInput' + i).attr('class' , hiddenClass);}
                        }
                    }
                    else{
                        if(!emptyAndVisibleFound){
                            $('#fileInput' + i).attr('class' , visibleClass);
                            emptyAndVisibleFound = true;
                        }
                        else{
                            $('#fileInput' + i).attr('class' , hiddenClass);}
                    }
                }
            }
        }

Проблема: Проблема в том, чтов IE8 изменение, по-видимому, инициируется первым, когда элемент входного файла теряет фокус (не до или после файлового браузера).В FireFox изменение производится сразу после закрытия файлового браузера?В этом случае я предпочитаю способ Firefox.

Как я могу решить это?

BestRegards

Примечание: я пытался создать jsfiddle.Чистый пример, но это не показывает проблему: http://jsfiddle.net/snowman/NCQ5J/

ОБНОВЛЕНИЕ: Мне удалось получить рабочий пример, пожалуйста, посмотрите здесь: http://www.test.figurspel.net/

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

Это ошибка в jquery 1.4.1, при переходе на 1.4.4 проблема была решена.

0 голосов
/ 23 марта 2011

Согласно документации jQuery ,

Событие изменения отправляется элементу при изменении его значения.... Для полей выбора, флажков и переключателей событие вызывается немедленно, когда пользователь делает выбор с помощью мыши, но для других типов элементов событие откладывается до тех пор, пока элемент не потеряет фокус.

, поэтому похоже, что поведение IE при запуске события изменения, когда поле ввода файла теряет фокус, кажется правильным.Firefox может автоматически убирать фокус на поле ввода файла, вызывая тем самым событие;в этом случае нам нужно придумать способ, чтобы IE также размывал (или явно вызывал ваш обработчик изменений) при выборе файла.

Это не слишком полезно для обхода вашей проблемы, но у меня нетt идея о том, как сделать это как есть (то есть обратный вызов, когда окно выбора файла закрывается?).Я обязательно обновлю это, как только узнаю что-нибудь.

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