반응형
Vue 앱(Vuetify.js 포함)에서 검증이 포함된 간단한 양식을 구현하는 방법
나는 Vuetify.js 예제를 사용하여 Vue.js로 구축된 웹사이트에 간단한 유효성 검사를 포함한 연락처 양식을 추가하려고 한다.나는 신참이라서 Vue 컴포넌트에서는 어떻게 구현해야 할지 잘 모르겠어.
나는 간단한 클라이언트 쪽 폼 검증을 달성해서 https://getform.org/ 폼으로 작동하게 하고 싶다.
업데이트됨:
코드 | 연락처.부에를 하다
(Vuetify.js 폼 예에서 추출)
<v-form v-model="valid">
<v-text-field
label="Name"
v-model="name"
:rules="nameRules"
:counter="10"
required
name="Name"
></v-text-field>
<v-text-field
label="E-mail"
v-model="email"
:rules="emailRules"
required
name="Email"
></v-text-field>
<v-btn
@click="submit"
:disabled="!valid"
>submit</v-btn>
</v-form>
<form method="post" action="https://www.getform.org/f/[MY_ID_HERE]" id="nativeForm"></form>
스크립트
<script>
export default {
name: 'contact',
data () {
return {
snackbar: true,
valid: false,
name: '',
nameRules: [
(v) => !!v || 'Name is required',
(v) => v.length <= 10 || 'Name must be less than 10 characters'
],
email: '',
emailRules: [
(v) => !!v || 'E-mail is required',
(v) => /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
]
}
},
methods: {
submit() {
nativeForm.submit()
}
}
}
</script>
단 하나의 양식을 사용하여 작동 가능:
<v-form method="post" action="https://www.getform.org/f/[YOUR-FORM-ID]" id="nativeForm" v-model="valid">
<v-text-field
label="Name"
v-model="name"
:rules="nameRules"
:counter="10"
required
name="message"
></v-text-field>
<v-text-field
label="E-mail"
v-model="email"
:rules="emailRules"
required
name="mail"
></v-text-field>
<v-btn @click="submit" :disabled="!valid">submit</v-btn>
</v-form>
각본을 뜨다
<script>
export default {
name: 'contact',
data () {
return {
valid: false,
name: '',
nameRules: [
(v) => !!v || 'Name is required',
(v) => v.length <= 10 || 'Name must be less than 10 characters'
],
email: '',
emailRules: [
(v) => !!v || 'E-mail is required',
(v) => /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
]
}
},
methods: {
submit() {
nativeForm.submit()
}
}
}
</script>
잊지 마십시오.
추가하려면name
특성겟폼은 그들을 필요로 한다.
const app = new Vue({
el:'#app',
data:{
errors:[],
name:null,
age:null,
movie:null
},
methods:{
checkForm:function(e) {
if(this.name && this.age) return true;
this.errors = [];
if(!this.name) this.errors.push("Name required.");
if(!this.age) this.errors.push("Age required.");
e.preventDefault();
}
}
})
input,select {
margin-left: 10px;
}
<script src="https://unpkg.com/vue@2.5.13/dist/vue.js"></script>
<form id="app" @submit="checkForm" action="/something" method="post">
<p v-if="errors.length">
<b>Please correct the following error(s):</b>
<ul>
<li v-for="error in errors">{{ error }}</li>
</ul>
</p>
<p>
<label for="name">Name<label>
<input type="text" name="name" id="name" v-model="name">
</p>
<p>
<label for="age">Age<label>
<input type="number" name="age" id="age" v-model="age" min="0">
</p>
<p>
<label for="movie">Favorite Movie<label>
<select name="movie" id="movie" v-model="movie">
<option>Star Wars</option>
<option>Vanilla Sky</option>
<option>Atomic Blonde</option>
</select>
</p>
<p>
<input type="submit" value="Submit">
</p>
</form>
CSS를 추가하고 완료하십시오.
반응형
'Programing' 카테고리의 다른 글
라우터에서 매개 변수를 사용하는 동안 오류 발생.푸시 함수 vue-property 4 (0) | 2022.03.17 |
---|---|
rxjs 관측 가능성과 일반 반응 구성요소를 통합하려면 어떻게 해야 하는가? (0) | 2022.03.17 |
Python - 'ascII' 코덱에서 바이트를 디코딩할 수 없음 (0) | 2022.03.17 |
Python 3에서 Raw_input을 사용하는 방법 (0) | 2022.03.17 |
주의 일부만 업데이트할 때 상태를 얼마나 깊이 복제해야 하는가? (0) | 2022.03.17 |