양식의 이미지 매수에 대한 유효성 검사
환경
Nuxt.js, Vuetify
하고 싶은 일
<v-form>
를 사용하여 양식을 만들고 그 중 적어도 하나 이상의 사진을 요청하고 싶습니다. 그리고 얻은 사진을 표시하고 싶습니다.
사진이 없을 때
사진이 있을 때
구현
item_register.vue<template>
<v-card>
<v-card-text
v-if="!validInput"
style="color: red"
>
最低一枚以上の写真が必要です
</v-card-text>
<v-file-input
required
class="pa-4"
multiple
label="写真を追加して下さい(複数可)"
filled
accept="image/*"
prepend-icon="mdi-camera"
@change="onChangeImage"
/>
</v-card>
</template>
<script>
export default {
data() {
return {
imageUrls: []
}
},
computed(){
// imageUrlsに写真があるときはtrue、ない時はfalse
validInput(){
return this.imageUrls.length > 0 ? true : false;
},
},
methods(){
// ファイルをbase64を用いて変換
getBase64(file){
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
resolve(reader.result);
};
reader.onerror = error => reject(error);
});
},
// ファイルが入力されたときに使うメソッド
onChangeImage(File) {
// 配列を一回初期化してから追加する必要がある。そうしないとどんどん写真が追加されていってしまう。
this.imageUrls = [];
File.forEach(file => {
this.getBase64(file)
.then(image => {
this.imageUrls.push(image);
})
.catch(error => console.log(error));
});
},
}
}
<script/>
구현에 있어서의 포인트
밸리데이션
이번에 사용한 v-file-input
라는 컴퍼넌트는 rules
프로퍼티를 지정하는 것으로 밸리데이션을 추가할 수 있다. 그러나, 이 rules에서는 이미지 사이즈의 밸리데이션등은 실장할 수 있지만, 파일수에 대해서는 잘 움직이는 rules를 설정할 수 없었다. 그 때문에 computed에 input 파일수에 의해 true/false를 돌려주는 validInput 를 실장해, 그것을 v-if 를 사용해 표시하는 것으로 밸리데이션을 실장했다.
Reference
이 문제에 관하여(양식의 이미지 매수에 대한 유효성 검사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kj455/items/240373c0de13f60105ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<v-form>
를 사용하여 양식을 만들고 그 중 적어도 하나 이상의 사진을 요청하고 싶습니다. 그리고 얻은 사진을 표시하고 싶습니다.사진이 없을 때
사진이 있을 때
구현
item_register.vue<template>
<v-card>
<v-card-text
v-if="!validInput"
style="color: red"
>
最低一枚以上の写真が必要です
</v-card-text>
<v-file-input
required
class="pa-4"
multiple
label="写真を追加して下さい(複数可)"
filled
accept="image/*"
prepend-icon="mdi-camera"
@change="onChangeImage"
/>
</v-card>
</template>
<script>
export default {
data() {
return {
imageUrls: []
}
},
computed(){
// imageUrlsに写真があるときはtrue、ない時はfalse
validInput(){
return this.imageUrls.length > 0 ? true : false;
},
},
methods(){
// ファイルをbase64を用いて変換
getBase64(file){
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
resolve(reader.result);
};
reader.onerror = error => reject(error);
});
},
// ファイルが入力されたときに使うメソッド
onChangeImage(File) {
// 配列を一回初期化してから追加する必要がある。そうしないとどんどん写真が追加されていってしまう。
this.imageUrls = [];
File.forEach(file => {
this.getBase64(file)
.then(image => {
this.imageUrls.push(image);
})
.catch(error => console.log(error));
});
},
}
}
<script/>
구현에 있어서의 포인트
밸리데이션
이번에 사용한 v-file-input
라는 컴퍼넌트는 rules
프로퍼티를 지정하는 것으로 밸리데이션을 추가할 수 있다. 그러나, 이 rules에서는 이미지 사이즈의 밸리데이션등은 실장할 수 있지만, 파일수에 대해서는 잘 움직이는 rules를 설정할 수 없었다. 그 때문에 computed에 input 파일수에 의해 true/false를 돌려주는 validInput 를 실장해, 그것을 v-if 를 사용해 표시하는 것으로 밸리데이션을 실장했다.
Reference
이 문제에 관하여(양식의 이미지 매수에 대한 유효성 검사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kj455/items/240373c0de13f60105ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<template>
<v-card>
<v-card-text
v-if="!validInput"
style="color: red"
>
最低一枚以上の写真が必要です
</v-card-text>
<v-file-input
required
class="pa-4"
multiple
label="写真を追加して下さい(複数可)"
filled
accept="image/*"
prepend-icon="mdi-camera"
@change="onChangeImage"
/>
</v-card>
</template>
<script>
export default {
data() {
return {
imageUrls: []
}
},
computed(){
// imageUrlsに写真があるときはtrue、ない時はfalse
validInput(){
return this.imageUrls.length > 0 ? true : false;
},
},
methods(){
// ファイルをbase64を用いて変換
getBase64(file){
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
resolve(reader.result);
};
reader.onerror = error => reject(error);
});
},
// ファイルが入力されたときに使うメソッド
onChangeImage(File) {
// 配列を一回初期化してから追加する必要がある。そうしないとどんどん写真が追加されていってしまう。
this.imageUrls = [];
File.forEach(file => {
this.getBase64(file)
.then(image => {
this.imageUrls.push(image);
})
.catch(error => console.log(error));
});
},
}
}
<script/>
밸리데이션
이번에 사용한
v-file-input
라는 컴퍼넌트는 rules
프로퍼티를 지정하는 것으로 밸리데이션을 추가할 수 있다. 그러나, 이 rules에서는 이미지 사이즈의 밸리데이션등은 실장할 수 있지만, 파일수에 대해서는 잘 움직이는 rules를 설정할 수 없었다. 그 때문에 computed에 input 파일수에 의해 true/false를 돌려주는 validInput 를 실장해, 그것을 v-if 를 사용해 표시하는 것으로 밸리데이션을 실장했다.
Reference
이 문제에 관하여(양식의 이미지 매수에 대한 유효성 검사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kj455/items/240373c0de13f60105ca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)