Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Dodanie i pokazanie obrazka po kliknięciu
Forum PHP.pl > Forum > Przedszkole
BienuSS
Witam.
Mam na stronie 4 pola aby dodać obrazy, po dodaniu 1 wszystko sie ładnie zmienia i zapisuje. Jednak w pozostałych 3 juz nie działa. Jak dla mnie wina jest w zmiennej "file" jednak nie moge dojsc do rozwiązania problemuf
  1. function previewFile(q1) {
  2.  
  3. var preview = document.getElementById(q1);
  4. var file = document.querySelector('input[type=file]').files[0];
  5. var reader = new FileReader();
  6.  
  7. reader.addEventListener("load", function () {
  8. preview.src = reader.result;
  9. }, false);
  10.  
  11. if (file) {
  12. reader.readAsDataURL(file);
  13. }
  14. }
  15. </script>
  16.  
trueblue
  1. document.querySelector('input[type=file]')

Ten kod znajduje pierwszy <input type="file"> na stronie.
BienuSS
z tym dopiskiem
  1. .files[0];

nie powinien znajdywać pierwszego pustego inputa ?
trueblue
Ten dopisek wskazuje na pierwszy wybrany plik w danym inpucie (input może pozwalać wybrać więcej niż jeden plik z opcją multiple).
BienuSS
Zmieniłem na pobieranie inputa prze ID
  1. document.getElementById('images-upload-input-2');

próbowałem też z dopiskiem .val(), ale nic to nie daje. Jakaś rada w jaką funkcje isc ?
trueblue
Pokaż kod po zmianach.
BienuSS
Przerobiłem w ten sposób obrazek wysyła ale nie pokazuje na żywo, plus jak zmieniam jeden obrazek to pozostałe sie kasują ...
  1. <input type="file" id="images-upload-input-1" accept=".png, .jpg, .jpeg" name="image_1" onchange="openFile('images-upload-input-1');" style='display: none;' />
  2.  
  3. FUNCTION openFile(q1) {
  4. var input = q1.target;
  5.  
  6. var reader = new FileReader();
  7. reader.onload = FUNCTION(){
  8. var dataURL = reader.result;
  9. var output = document.getElementById('img-new-1');
  10. output.src = dataURL;
  11. };
  12. reader.readAsDataURL(input.files[0]);
  13. input.readAsDataURL(output);
  14. };


jesli zmienie

  1.  
  2. <input type="file" id="images-upload-input-1" accept=".png, .jpg, .jpeg" name="image_1" onchange="openFile(event);" style='display: none;' />


to obrazek sie pokazuje ale nie wysyła.
trueblue
No ale files[0] nadal należy używać. Tak jak pisałem, wartość tego elementu wskazuje na wybrany plik. Gdybyś miał opcję multiple dla input, to wartości byłyby również pod kolejnymi indeksami.
BienuSS
Dlatego najpierw zdeklarowałem zmienną do każdego inputa
  1. var input = q1.target;

Później podpiąłem do tego ten kod
  1. reader.readAsDataURL(input.files[0]);


Miałem nadzieje ze to na tej zasadzie bedzie działało
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.