Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Глюк с множественным вызовом change() (https://javascript.ru/forum/misc/49013-glyuk-s-mnozhestvennym-vyzovom-change.html)

KlausKater 25.07.2014 17:09

Глюк с множественным вызовом change()
 
Здравствуйте уважаемые гуру, очень нужна помощь, уже давно сижу в отладке одной проблемы.
Скрипт срабатывает при вызове селектора файлов, и выбора нескольких файлов. Почему то выбранные файлы дублируются, рандомное количество раз.
В отладке стало понятно, что событие change() вызывается несколько раз для одного селекта. Перебрал все варианты... после отработки данной функции, фокус выполнения смещается куда то в файлы jquery после чего возвращается обратно, еще раз выполнять функцию.
Сломал весь мозг...


$('.fileselecter').change(function(){
     * Вот на этой точке я его ловлю**
            fileselecter = this;
            if (this.files && this.files[0]) {
                 for(var file = 0; file < this.files.length; file++){
                        if(!(this.files[file].type == "image/jpeg" || this.files[file].type == "image/png")){
                            alert('Неправильный тип файла. Нужен .jpeg или .png');
                            continue;
                        }
//                        $(fileselecter).parent().hide();
                        var reader = new FileReader();
                        reader.onload = function (e) {
                            var img = document.createElement('img');
                            $(img).attr('src', e.target.result);
                            img.onload = function() {
                                *Сдесь фотография добавляется к списку фотографий .append() и т.д.*
                            }
                        };
                        reader.readAsDataURL(this.files[file]);
                    }
           }
}

WorM32 25.07.2014 17:25

Этот кусок кода не находится в каком либо цикле?

Попробуй стек вызовов посмотреть в отладчике, что change генерирует.

KlausKater 25.07.2014 17:30

Нет, кусок кода находиться в $(document).ready(function() {Здесь});

Стек вызовов как посмотреть??

KlausKater 25.07.2014 17:33

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


Часовой пояс GMT +3, время: 17:39.