您好,登錄后才能下訂單哦!
這篇“Vue Validator表單驗(yàn)證插件怎么使用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Vue Validator表單驗(yàn)證插件怎么使用”文章吧。
基本使用
<div id="app"> <validator name="validation"> <form novalidate> <div class="username-field"> <label for="username">username:</label> <input type="text" id="username" v-validate:username="['required']" /> </div> <div class="comment-filed"> <label for="comment">comment:</label> <input type="text" id="comment" v-validate:comment="{maxlength: 256}" /> </div> <div class="errors"> <p v-if="$validation.username.required">請(qǐng)輸入你的名字</p> <p v-if="$validation.comment.maxlength">您的評(píng)論太長(zhǎng)了</p> </div> <input type="submit" value="send" v-if="$validation.valid" /> </form> </validator> </div> <script src="//cdn.bootcss.com/vue/1.0.24/vue.js" type="text/javascript" charset="utf-8"></script> <script src="//cdn.bootcss.com/vue-validator/2.1.3/vue-validator.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> new Vue({ el: '#app' }); </script>
將要驗(yàn)證的表單包裹在validator自定義元素指令中,而在要驗(yàn)證的表單控件元素的 v-validate 屬性上綁定相應(yīng)的校驗(yàn)規(guī)則。
驗(yàn)證結(jié)果會(huì)保存在組建實(shí)例的 $validation 屬性下。 $validation 是由 validator 元素和 name 屬性和 $ 前綴組件
驗(yàn)證結(jié)果結(jié)構(gòu)
{ // 表單整體驗(yàn)證 "valid": false, // 字段校驗(yàn)是否通過(guò) "invalid": true, // valid 取反 "touched": false, // 校驗(yàn)字段所在元素獲得通過(guò)焦點(diǎn)時(shí)返回true,否則返回false "untouched": true, // touched 取反 "modified": false, // 當(dāng)元素值與初始值不同時(shí)返回true,否則返回false "dirty": false, // 字段值改變過(guò)至少一次返回true,否則返回false "pristine": true, // dirty 取反 // 字段單一驗(yàn)證 "username": { "required": true, "modified": false, "pristine": true, "dirty": false, "untouched": true, "touched": false, "invalid": true, "valid": false }, "comment": { "maxlength": false, "modified": false, "pristine": true, "dirty": false, "untouched": true, "touched": false, "invalid": false, "valid": true } }
校驗(yàn)結(jié)果由兩部分組成。表單整體校驗(yàn)結(jié)果和單個(gè)字段校驗(yàn)結(jié)果。
驗(yàn)證器語(yǔ)法
v-validate 指令語(yǔ)法:
v-validate[:field]=”array literal | object literfal | binding”
校驗(yàn)字段名field
field用來(lái)標(biāo)識(shí)校驗(yàn)字段,之后可以用該字段來(lái)引用校驗(yàn)結(jié)果
v-validate 指令用來(lái)定義校驗(yàn)規(guī)則,其值可以是數(shù)組字面量,對(duì)象字面量,組件實(shí)例數(shù)組屬性名。
數(shù)組字面量
當(dāng)校驗(yàn)器不需要額外參數(shù)時(shí),可以使用數(shù)組字面量形式,如 required 校驗(yàn)器,只要出現(xiàn)就帶I表該校驗(yàn)器所在元素是必填項(xiàng)。
<div id="app"> <validator name="validation"> <form novalidate> Zip: <input type="text" v-validate:zip="['required']" /><br /> <div> <span v-if="$validation.zip.required">郵政編碼是必填項(xiàng)</span> </div> </form> </validator> </div>
對(duì)象字面量
對(duì)象字面量語(yǔ)法適合需要額外參數(shù)的校驗(yàn)器。如限制輸入長(zhǎng)度的校驗(yàn)器 minlength,需要說(shuō)明限制長(zhǎng)度多少。
<div id="app"> <validator name="validation"> <form novalidate> ID: <input type="text" v-validate:id="{ required:true, minlength: 3, maxlength: 16 }" /> <br /> <div> <p v-if="$validation.id.required">ID不能為空</p> <p v-if="$validation.id.minlength">你的ID名字太短</p> <p v-if="$validation.id.maxlength">你的ID名字太長(zhǎng)</p> </div> <input type="submit" value="send" v-if="$validation.valid" /> </form> </validator> </div>
還可以用 對(duì)象字面量語(yǔ)法通過(guò) rule 字段來(lái)自定義驗(yàn)證規(guī)則
<div id="app"> <validator name="validation"> <form novalidate> ID: <input type="text" v-validate:id="{minlength: {rule: 3}, required: true, maxlength: {rule: 16}}" /> <br /> <div> <p v-if="$validation.id.required">ID不能為空</p> <p v-if="$validation.id.minlength">你的ID名字太短</p> <p v-if="$validation.id.maxlength">你的ID名字太長(zhǎng)</p> </div> <input type="submit" value="send" v-if="$validation.valid" /> </form> </validator> </div>
實(shí)例數(shù)據(jù)屬性
v-validate 的值可以是組建實(shí)例的數(shù)據(jù)屬性。這樣可以用來(lái)動(dòng)態(tài)綁定校驗(yàn)規(guī)則。
<div id="app"> <validator name="validation"> <form novalidate> ID: <input type="text" v-validate:id="rules" /><br /> <div> <p v-if="$validation.id.required">不能為空</p> <p v-if="$validation.id.minlength">你的ID太短</p> <p v-if="$validation.id.maxlength">你的ID太長(zhǎng)</p> </div> </form> </validator> </div> <script src="//cdn.bootcss.com/vue/1.0.24/vue.js" type="text/javascript" charset="utf-8"></script> <script src="//cdn.bootcss.com/vue-validator/2.1.3/vue-validator.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> new Vue({ el: '#app', data: { rules: { required: true, minlength: 3, maxlength: 16 } } }); </script>
內(nèi)置校驗(yàn)規(guī)則
vue-validator 內(nèi)置一些常用的驗(yàn)證規(guī)則:
required — 輸入值不能為空
pattern — 必須匹配pattern表示的正則表達(dá)式
minlength — 輸入值長(zhǎng)度不能小于minlength表示的值
maxlength — 輸入的值不能大于maxlength表示的值
min — 輸入值不能小于min表示的值
max — 輸入值不能大于max表示的值
與v-model同時(shí)使用
vue-validator會(huì)自動(dòng)校驗(yàn)通過(guò)v-model動(dòng)態(tài)設(shè)置的值。
<div id="app"> <validator name="validation"> <form novalidate> message: <input type="text" v-model="msg" v-validate:message="{required: ture, minlength: 8}" /> <br /> <p v-if="$validation.message.required">message不能為空</p> <p v-if="$validation.message.minlength">message輸入太長(zhǎng)位數(shù)</p> </form> </validator> </div> <script src="//cdn.bootcss.com/vue/1.0.24/vue.js" type="text/javascript" charset="utf-8"></script> <script src="//cdn.bootcss.com/vue-validator/2.1.3/vue-validator.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> var vm = new Vue({ el: '#app', data: { msg: '' } }); setTimeout(function () { vm.msg = 'hello world!'; }, 2000); </script>
重置校驗(yàn)結(jié)果
通過(guò)在Vue組件實(shí)例上調(diào)用$resetValidation();方法來(lái)動(dòng)態(tài)重置校驗(yàn)結(jié)果。
<div id="app"> <validator name="validation"> <form novalidate> <div class="username-field"> <label for="username">username:</label> <input type="text" id="username" v-validate:username="['required']" /> </div> <div class="comment-filed"> <label for="comment">comment:</label> <input type="text" id="comment" v-validate:comment="{maxlength: 256}" /> </div> <div class="errors"> <p v-if="$validation.username.required">用戶名不能為空</p> <p v-if="$validation.comment.maxlength">輸入文字超過(guò)256個(gè)</p> <input type="submit" value="send" v-if="$validation.valid" /> <button type="button" @click="onReset">Reset Validation</button> </div> <pre>{{$validation | json}}</pre> </form> </validator> </div> <script src="//cdn.bootcss.com/vue/1.0.24/vue.js" type="text/javascript" charset="utf-8"></script> <script src="//cdn.bootcss.com/vue-validator/2.1.3/vue-validator.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> new Vue({ el: '#app', methods: { onReset: function () { this.$resetValidation(); } } }); </script>
復(fù)選框checkbox
<div id="app"> <validator name="validation"> <form novalidate> <h2>調(diào)查</h2> <fieldset> <legend>請(qǐng)選擇水果</legend> <input type="checkbox" id="apple" value="apple" v-validate:fruits="{ required: { rule: true, message: requiredErrorMsg }, minlength: { rule: 1, message: minlengthErrorMsg }, maxlength: { rule: 2, message: maxlengthErrorMsg } }" /> <label for="apple">Apple</label> <input type="checkbox" id="orange" value="orange" v-validate:fruits /> <label for="orange">Orange</label> <input type="checkbox" id="grape" value="grape" v-validate:fruits /> <label for="grape">Grape</label> <input type="checkbox" id="banana" value="banana" v-validate:fruits /> <label for="banana">Banana</label> <ul class="errors"> <li v-for="msg in $validation.fruits"> <p>{{msg | json}}</p> </li> </ul> </fieldset> </form> </validator> </div> <script src="//cdn.bootcss.com/vue/1.0.24/vue.js" type="text/javascript" charset="utf-8"></script> <script src="//cdn.bootcss.com/vue-validator/2.1.3/vue-validator.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> new Vue({ el: '#app', computed: { requiredErrorMsg: function () { return '請(qǐng)選擇水果'; }, minlengthErrorMsg: function () { return '請(qǐng)選擇至少1個(gè)水果!'; }, maxlengthErrorMsg: function () { return '請(qǐng)選擇最多2個(gè)水果!'; } } }); </script>
下拉類表select
<div id="app"> <validator name="validation"> <form novalidate> <select v-validate:lang="{required: true}"> <option value="">請(qǐng)選擇語(yǔ)言</option> <option value="javascript">javascript</option> <option value="php">php</option> <option value="node">node</option> </select> <div class="errors"> <p v-if="$validation.lang.required">不能為空!</p> </div> </form> </validator> </div> <script src="//cdn.bootcss.com/vue/1.0.24/vue.js" type="text/javascript" charset="utf-8"></script> <script src="//cdn.bootcss.com/vue-validator/2.1.3/vue-validator.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> new Vue({ el: '#app' }); </script>
校驗(yàn)狀態(tài)class
各校驗(yàn)狀態(tài)都有其對(duì)應(yīng)的class(默認(rèn)) 也可以自定義校驗(yàn)狀態(tài)class
<validator name="validation" :classes="{touched: 'touehc-validator', dirty: 'dirty-validator'}"> <label for="username">username</label> <<input type="text" id="username" :classes="{valid: 'valid-username', invalid: 'invalid-username'}" v-validate:username="{required: {rule: true, message: 'required you name!'}}"> </validator> <!-- classes屬性只能在validator元素或應(yīng)用了v-validate的元素上使用有效 -->
分組校驗(yàn)
vue-validator支持分組校驗(yàn)。例如重復(fù)密碼功能。
<div id="app"> <validator name="validation" :groups="['passwordGroup']"> <form novalidate> username: <input type="text" v-validate:username="['required']" /><br /> password: <input type="password" v-validate:password="{ minlength: 8, required: true }" group="passwordGroup" /><br /> comfirm password: <input type="password" v-validate:password-comfirm="{minlength: 8, required: true}" group="passwordGroup" /> <div class="errors"> <p v-if="$validation.username.required">用戶名不能為空</p> <p v-if="$validation.password.required">密碼不能為空</p> <p v-if="$validation.password.minlength">密碼不能少于8位</p> <p v-if="$validation.password-comfirm.required">重復(fù)密碼不能為空</p> <p v-if="$validation.password-comfirm.minlength">密碼不能少于8位</p> <p v-if="$validation.passwordGroup.valid">密碼不一致</p> </div> </form> </validator> </div> <script src="//cdn.bootcss.com/vue/1.0.24/vue.js" type="text/javascript" charset="utf-8"></script> <script src="//cdn.bootcss.com/vue-validator/2.1.3/vue-validator.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> new Vue({ el: '#app' }); </script>
Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫(kù)只關(guān)注視圖層,方便與第三方庫(kù)和項(xiàng)目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫(kù)開(kāi)發(fā)復(fù)雜的單頁(yè)應(yīng)用。
以上就是關(guān)于“Vue Validator表單驗(yàn)證插件怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。