Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Удаленная работа для IT-специалистов
<input type="checkbox" id="checkbox" v-model="checkbox" :class="{invalid:($v.checkbox.$dirty && !$v.checkbox.required)}"/><label >Принимаю условия использования</label> validations: { checkbox: { required } }
$v. checkbox
<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>