image-upload-preview.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /**
  2. * Created by Vladimir on 25.03.2018.
  3. */
  4. function initImageUpload(box) {
  5. let uploadField = box.querySelector('.image-upload');
  6. uploadField.addEventListener('change', getFile);
  7. function getFile(e) {
  8. let file = e.currentTarget.files[0];
  9. checkType(file);
  10. }
  11. function previewImage(file) {
  12. let thumb = box.querySelector('.js--image-preview'),
  13. reader = new FileReader();
  14. reader.onload = function () {
  15. box.querySelector('.js--image-preview span').style.display = 'none';
  16. thumb.style.backgroundImage = 'url(' + reader.result + ')';
  17. box.querySelector('.required-field-block').style.display = null;
  18. };
  19. reader.readAsDataURL(file);
  20. thumb.className += ' js--no-default';
  21. }
  22. function checkType(file) {
  23. let imageType = /image.*/;
  24. if (!file.type.match(imageType)) {
  25. throw 'Файл не правильного формата';
  26. } else if (!file) {
  27. throw 'Отсутствует файл';
  28. } else {
  29. previewImage(file);
  30. }
  31. }
  32. }
  33. function clearInputFile(element) {
  34. box = element.parentElement;
  35. setIsDeleted(box);
  36. box.querySelector('.image-upload').value = null;
  37. box.querySelector('.js--image-preview').style.backgroundImage = 'url("")';
  38. box.querySelector('.js--image-preview').className = 'js--image-preview';
  39. $(box.querySelector('.required-field-block')).hide();
  40. $(box.querySelector('.js--image-preview span')).show();
  41. }
  42. function setIsDeleted(element) {
  43. $(element).find('[data-is-deleted]').val('deleted');
  44. }
  45. var boxes = document.querySelectorAll('.box');
  46. for (let i = 0; i < boxes.length; i++) {
  47. let box = boxes[i];
  48. initImageUpload(box);
  49. }