-
6월 16일 TIL - 인풋 필수입력, 이미지 미리보기TIL(Today I Learned) 2023. 6. 18. 22:08
▷ 오늘의 시도
! 폼 데이터를 제출할 때 인풋 태그에 reqired를 주어서 필수 입력값이 되게 하기 !
이렇게 하려고 하면 버튼 타입이 submit이어야하는데 현재 글 작성 버튼은 버튼타입으로 설정되어 있었다. 그래서 버튼을 눌러서 발생하는 이벤트가 살짝 변형되어져야 했다. submit을 했을 때 새로고침되는 이벤트를 없애주고 백으로 포스트형식으로 요청을 보내도록 고쳐중었다.
! 이미지 제출시 미리보기!
js에서 인풋태그를 가져와서 .addEventListener를 추가해준다. 발생되는 이벤트는 이미지파일을 읽고 그 파일을 html에 띄어주는 함수이다.
function getImageFiles(e) { const uploadFiles = []; const files = e.currentTarget.files; const imagePreview = document.querySelector('#image-preview'); const docFrag = new DocumentFragment(); if ([...files].length >= 10) { alert('이미지는 최대 9개 까지 업로드가 가능합니다.'); return; } // 파일 타입 검사 [...files].forEach(file => { if (!file.type.match("image/.*")) { alert('이미지 파일만 업로드가 가능합니다.'); return } // 파일 갯수 검사 if ([...files].length < 10) { uploadFiles.push(file); const reader = new FileReader(); imagePreview.innerHTML = '' reader.onload = (e) => { const preview = createElement(e, file); imagePreview.appendChild(preview); }; reader.readAsDataURL(file); } }); } function createElement(e, file) { const div = document.createElement('div'); div.setAttribute('class', 'col') const div2 = document.createElement('div'); div2.setAttribute('style', 'height:150px; width:150px;') div.appendChild(div2) const img = document.createElement('img'); img.setAttribute('src', e.target.result); img.setAttribute('class', 'cardimg img-thumbnail'); img.setAttribute('data-file', file.name); div2.appendChild(img); return div; } const imageUpload = document.getElementById("images"); imageUpload.addEventListener('change', getImageFiles);
'TIL(Today I Learned)' 카테고리의 다른 글
6월 20일 TIL - 키워드 추출 어떻게 하지 (0) 2023.06.20 6월 19일 TIL - 스케쥴러 (0) 2023.06.19 6월 15일 TIL - 메인, 검색, gps 검색 화면 구성하기 (0) 2023.06.15 6월 14일 TIL - 프론트 메인페이지 제작하기 (1) 2023.06.14 6월 13일 TIL - 테스트 코드 작성 완료 (0) 2023.06.13