0👍
You can use class binding functionality of Vue.
:class="{'selected': isDisabled}"
new Vue({
el: '#app',
data() {
return {
terms: false,
fullname:'',
maxfullname: 10,
mobile: '',
maxmobile: 10,
area: '',
maxarea: 12,
city: '',
maxcity: 12,
gstin: '',
maxgstin: 12,
email: '',
maxemail: 15
};
},
computed: {
isDisabled: function(){
return this.terms && this.fullname.length < this.max && this.mobile.length < this.maxmobile && this.gstin.length < this.maxgstin && this.email.length < this.maxemail;
}
}
})
.register-button {
width: 160px;
height: 50px;
line-height: 50px;
text-align: center;
font-size: 16px;
font-weight: 600;
color: #fff;
background-color: #ee1d24;
border-radius: 10px;
margin-top: 15px;
padding: 0 20px;
cursor: pointer;
opacity: 0.5;
display: flex;
justify-content: center;
align-items: center;
outline: none;
border: none;
}
.selected {
background-color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<p>
<label for='terms'>
<input id='terms' type='checkbox' v-model='terms'/> I accept terms!!!
<input id="fullname" type='text' v-model='fullname' :maxlength="maxfullname"/> name
<input id="mobile" type='text' v-model='mobile'/ :maxlength="maxmobile"> mobile
<input id="area" type='text' v-model='area' :maxlength="maxarea"/> area
<input id="city" type='text' v-model='city':maxlength="maxcity"/> city
</label>
</p>
<button class="register-button" :class="{'selected': isDisabled}" :disabled='!isDisabled'>Send Form</button>
</div>
- [Vuejs]-Getting target element from method (without event)
- [Vuejs]-Can you retreive the current logged in user from JWT token?
Source:stackexchange.com