This repository has been archived on 2021-09-06. You can view files and clone it, but cannot push or open issues or pull requests.
vuejs_course/2021-02-08 2024 forms-01-st.../src/components/TheForm.vue

199 lines
4.1 KiB
Vue

<template>
<form @submit.prevent="submitForm">
<div class="form-control">
<label for="user-name">Your Name</label>
<input id="user-name" name="user-name" type="text" v-model="userName" />
</div>
<div class="form-control">
<label for="age">Your Age (Years)</label>
<input id="age" name="age" type="number" v-model="userAge" />
</div>
<div class="form-control">
<label for="referrer">How did you hear about us?</label>
<select id="referrer" name="referrer" v-model="referrer">
<option value="google">Google</option>
<option value="wom">Word of mouth</option>
<option value="newspaper">Newspaper</option>
</select>
</div>
<div class="form-control">
<h2>What are you interested in?</h2>
<div>
<input
id="interest-news"
name="interest"
type="checkbox"
value="news"
v-model="interest"
/>
<label for="interest-news">News</label>
</div>
<div>
<input
id="interest-tutorials"
name="interest"
type="checkbox"
value="tutorials"
v-model="interest"
/>
<label for="interest-tutorials">Tutorials</label>
</div>
<div>
<input
id="interest-nothing"
name="interest"
type="checkbox"
value="nothing"
v-model="interest"
/>
<label for="interest-nothing">Nothing</label>
</div>
</div>
<div class="form-control">
<h2>How do you learn?</h2>
<div>
<input
id="how-video"
name="how"
type="radio"
value="video"
v-model="how"
/>
<label for="how-video">Video Courses</label>
</div>
<div>
<input
id="how-blogs"
name="how"
type="radio"
value="blogs"
v-model="how"
/>
<label for="how-blogs">Blogs</label>
</div>
<div>
<input
id="how-other"
name="how"
type="radio"
value="other"
v-model="how"
/>
<label for="how-other">Other</label>
</div>
<div class="form-control"><form-control></form-control></div>
<div class="form-control">
<input
type="checkbox"
name="confirm-terms"
id="confirm-terms"
v-model="confirmTerms"
/>
<label for="confirm-terms">Agree to terms of use?</label>
</div>
</div>
<div>
<button>Save Data</button>
</div>
</form>
</template>
<script>
import FormControl from './RatingControl';
export default {
components: {
FormControl
},
data() {
return {
userName: '',
userAge: null,
referrer: 'wom',
interest: [],
how: null,
confirmTerms: false
};
},
methods: {
submitForm() {
console.log('Username: ' + this.userName);
this.userName = '';
console.log(this.userAge);
this.userAge = null;
console.log(this.referrer);
this.referrer = 'wom';
console.log(this.interest);
this.interest = [];
console.log(this.how);
this.how = null;
console.log(this.confirmTerms);
this.confirmTerms = false;
}
}
};
</script>
<style scoped>
form {
margin: 2rem auto;
max-width: 40rem;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
padding: 2rem;
background-color: #ffffff;
}
.form-control {
margin: 0.5rem 0;
}
label {
font-weight: bold;
}
h2 {
font-size: 1rem;
margin: 0.5rem 0;
}
input,
select {
display: block;
width: 100%;
font: inherit;
margin-top: 0.5rem;
}
select {
width: auto;
}
input[type='checkbox'],
input[type='radio'] {
display: inline-block;
width: auto;
margin-right: 1rem;
}
input[type='checkbox'] + label,
input[type='radio'] + label {
font-weight: normal;
}
button {
font: inherit;
border: 1px solid #0076bb;
background-color: #0076bb;
color: white;
cursor: pointer;
padding: 0.75rem 2rem;
border-radius: 30px;
}
button:hover,
button:active {
border-color: #002350;
background-color: #002350;
}
</style>