<input type="checkbox" id="checkbox" v-model="checkbox" :class="{invalid:($v.checkbox.$dirty && !$v.checkbox.required)}"/><label >Принимаю условия использования</label>
validations: {
checkbox: {
required
}
}
<body >
<div id="app">
<form @submit.prevent="submitHandler">
<label for="name" >Name</label>
<input type="text" id="name" name="name" placeholder="Введите Ваше имя" v-model="name" :class="{invalid:(!$v.name.regname && !$v.name.required && $v.email.$dirty)}"/>
<span v-if="!$v.name.regname && !$v.name.required && $v.email.$dirty">введите корректное значение</span><br>
<label for="lname">Еmail</label>
<input type="text" id="emal" name="email" placeholder="Введите ваш email" v-model="email" :class="{invalid:($v.email.$dirty && !$v.email.required)}"/>
<span v-if="$v.email.$dirty && !$v.email.required">введите корректное значение</span><br>
<label for="">Номер телефона</label>
<input type="text" id="tel" name="tel" placeholder="Введите номер телефона" v-mask="'####-##'" v-model="tel" :class="{invalid:($v.tel.$dirty && !$v.tel.required)}"/>
<span v-if="$v.tel.$dirty && !$v.tel.required">введите корректное значение </span><br>
<label for=""> Язык</label>
<select name="lenguage" id="" v-model="lenguage">
<option value="leng" v-for="leng in lenguages" >{{leng}}</option>
</select>
<input type="checkbox" id="ch" v-model="ch" :class="{invalid:($v.ch.$dirty && !$v.ch.required)}"/>
<label for="">Принимаю условия использования</label>
<button type="submit" :disabled="$v.$invalid" >Зарегистрироваться</button>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuelidate@0.7.6/dist/vuelidate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuelidate@0.7.6/dist/validators.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/v-mask/dist/v-mask.min.js"></script>
<script>
/*const { required, minLength } = window.validators;*/ /*:class="{invalid:($v.name.$dirty && !$v.name.required)}*/
Vue.use(window.vuelidate.default);
// As a plugin
Vue.use(VueMask.VueMaskPlugin);
// Or as a directive
Vue.directive('mask', VueMask.VueMaskDirective);
const { required,alpha, minLength, email } = window.validators;
new Vue({
el: "#app",
data: {
name: '' ,
email: '',
tel: '',
lenguages: ['en','ru','ua'],
lenguage:'',
ch:false
},
validations: {
name: {
required,
regname(value) {
if(value === "") return false;
return new RegExp('^[a-z\\s-]+$','g').test(value);
}
},
email: {
email,
required,
},
tel: {
required,
/*minLength: minLength(11)*/
},
ch: {
required
/* checked(value) {
return value;
}*/
}
},
methods: {
submitHandler() {
if(this.$v.$invalid){
this.$v.$touch();
return;
}
}
}
})
</script>
</body>
</html>