目標:簡單易用可擴展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