Здравствуйте, не могу понять почему когда я загружаю к примеру 3 картинки (через Multiple), то в превью они отображаются не по порядку как я выбрал. Т.е. 2,1,3 Как можно сделать чтобы отображались по порядку то что я выбрал через CTR ? (1,2,3) Код (Javascript): $(function() { var imagesPreview = function(input, placeToInsertImagePreview) { if (input.files) { var filesAmount = input.files.length; for (i = 0; i < filesAmount; i++) { var reader = new FileReader(); reader.onload = function(event) { var hrava = Math.random(); $($.parseHTML('........')).attr('src', event.target.result).appendTo(placeToInsertImagePreview); } reader.readAsDataURL(input.files[i]); } } }; $('#gallery-photo-add').on('change', function() { imagesPreview(this, 'div.gallery'); }); });
А собственно никак. По ходу, нет даже события с помощью которого можно бы было отслеживать выбор очередного файла, а сборщик браузера принимает сразу пачку файлов без учета порядка выбора и сортирует их ориентируясь на сортировку в файлов в директории. А тому же хрому, вообще по баробану и он сортирует в алфавитном порядке
по сути разобрал, что код выводи первые загруженные фотографии, это делает .onload выход такой, надо загруженные фотки внести в массив и потом уже выводит (типа дождаться все фотки) и целиком вывести. Вот вопрос только как....
@hust0, это не решает вашу проблему. Вы смотрите на вывод, а я говорю о том порядке файлов, который будет в объекте FileList. Сделайте вывод этого объекта в консоль и вы увидите, что сортировка файлов будет всегда одинаковой и не будет зависеть от того, в каком порядке вы их выбирали.
Если о том, как вывести в консоль, то: Код (Javascript): $('#gallery-photo-add').on('change', function() { console.log(this.files); }); // или, чтобы быстрее увидеть результат $('#gallery-photo-add').on('change', function() { console.log([].map.call(this.files, (el) => el.name)); }); А в остальном, у меня нет способов решить вашу проблему