目标:简单易用可扩展html
// 你只要指定 data-scope data-name data-type v-validate-easy 这四个属性的值,而后经过调用this.V.$submit(scope)就能够进行提交表单了 <form> <div class="my-form-group" data-scope="register" data-name="email" data-type="input" v-validate-easy="[['required','邮箱为必填项目'],['email']]"> <label> <div class="label">邮箱</div> <input class="input" type="text" spellcheck="false" placeholder="请输入邮箱"/> </label> </div> <div id="pwd" class="my-form-group" data-scope="register" data-name="password" data-type="input" v-validate-easy="[['required','密码不能为空'],['password'],['maxLength',[32],'密码最长为32位']]"> <label> <div class="label">密码</div> <input class="input" type="text" spellcheck="false" placeholder="请再次输入密码"/> </label> </div> <div class="my-form-group" data-scope="register" data-name="password" data-type="input" v-validate-easy="[['required','确认密码不能为空'],['equalTo',['pwd'],'密码输入不一致']]"> <label> <div class="label">确认密码</div> <input class="input" type="text" spellcheck="false" placeholder="请输入邮箱"/> </label> </div> <div class="btn-group"> <button class="my-btn" @click.prevent="submit('register')">注册</button> <button class="my-btn" @click.prevent="reset('register')">重置</button> </div> </form>
methods: { reset(scope) { this.V.$reset(scope) }, submit(scope) { this.V.$submit(scope, (canSumit,data) => { // canSumit为true时,则全部该scope的全部表单验证经过 if(!canSumit) return // 发送请求 axios({ url: '/test',data, method: 'post'}) .then(() => { // 成功响应处理 }) .catch(() => { // 错误处理 }) }) } },
<form> <h3>用户登陆</h3> <my-input label="用户名" data-scope="login" data-name="username" v-validate-easy="[['required']]"></my-input> <my-input label="密码" data-scope="login" type="password" data-name="pwd" v-validate-easy="[['required']]"></my-input> <div class="btn-group"> <button class="my-btn" @click.prevent="submit('login')">登陆</button> <button class="my-btn" @click.prevent="reset('login')">重置</button> </div> </form>
欢迎你们star,对该项目有什么问题和建议,欢迎提issuevue