vue @vuelidate父子組件綁定注意事項(xiàng)
vue @vuelidate父子組件綁定注意
如果父子組件都有驗(yàn)證的,不能這樣寫(xiě)
const V2$ = useVuelidate(rules, formdata) const submitBtn = async () => { const V2$ = useVuelidate(rules, formdata)
如果這樣寫(xiě)的話,在父組件驗(yàn)證時(shí),也會(huì)把子組件的驗(yàn)證代上。
正確寫(xiě)法
const submitBtn = async () => { const V2$ = useVuelidate(rules, formdata) let validate =await V2$.value.$validate()
要在自己驗(yàn)證的方法內(nèi)部進(jìn)行綁定
Vuelidate表單驗(yàn)證規(guī)則
Vuelidate中的必填驗(yàn)證規(guī)則
用到的技術(shù) vue + quasar + vuelidate(網(wǎng)址)
引用方法如下:
Vue.use(window.vuelidate.default) var minLength = window.validators.minLength var required = window.validators.required var requiredIf = window.validators.requiredIf var email = window.validators.email var helpers = window.validators.helpers validations: { baseInfoForm: { mobilePhone:{ required: required }, col19:{ required: required }, kitchenTime:{ required: requiredIf(function(baseInfoForm) { return baseInfoForm.col19 == 'Y' //當(dāng)col19的值為Y時(shí),才有kitchenTime的驗(yàn)證 })} }
一個(gè)簡(jiǎn)單的例子:
<q-field icon="stay_primary_portrait" :error="readonly == false? $v.baseInfoForm.mobilePhone.$error: false" error-label="手機(jī)號(hào)碼不能為空" //警告提示信息 class="col-lg-4 col-md-6 col-sm-12 col-xs-12"> <q-input :readonly="readonly" @blur="$v.baseInfoForm.mobilePhone.$touch" :float-label="$t('手機(jī)號(hào)碼')" type="number" v-model="baseInfoForm.mobilePhone"></q-input> </q-field> <q-field v-if="baseInfoForm.col19 == 'Y' " icon="access_time" :error="readonly == false? $v.baseInfoForm.kitchenTime.$error: false" error-label="進(jìn)入廚電行業(yè)時(shí)間不能為空" class="col-lg-4 col-md-6 col-sm-12 col-xs-12"> <q-datetime type="date" format="YYYY-MM-DD" format-model="string" :float-label="$t('若是,進(jìn)入廚電行業(yè)時(shí)間')" @blur="$v.baseInfoForm.kitchenTime.$touch" v-model="baseInfoForm.kitchenTime"></q-datetime> </q-field>
效果如下:
具體代碼實(shí)現(xiàn)如下:
<div id="q-supplierBaseInfo" v-cloak> <q-field icon="stay_primary_portrait" :error="readonly == false? $v.baseInfoForm.mobilePhone.$error: false" error-label="手機(jī)號(hào)碼不能為空" class="col-lg-4 col-md-6 col-sm-12 col-xs-12"> <q-input :readonly="readonly" @blur="$v.baseInfoForm.mobilePhone.$touch" :float-label="$t('手機(jī)號(hào)碼')" type="number" v-model="baseInfoForm.mobilePhone"></q-input> </q-field> <q-field icon="work" :error="readonly == false? $v.baseInfoForm.col19.$error: false" error-label="是否為供應(yīng)商不能為空" class="col-lg-4 col-md-6 col-sm-12 col-xs-12"> <q-select @blur="$v.baseInfoForm.col19.$touch" :float-label="$t('是否為供應(yīng)商')" :options="col19Options" v-model="baseInfoForm.col19"></q-select> </q-field> </div> <script> // quasar components use Quasar.i18n.set(Quasar.i18n[LANGUGE]) Vue.use(window.vuelidate.default) var minLength = window.validators.minLength var required = window.validators.required var requiredIf = window.validators.requiredIf var helpers = window.validators.helpers var supplierInvite = new Vue({ el: '#q-supplierBaseInfo', i18n: i18n, data: function() { return { col19Options:[ { label: '是', value: 'Y' }, { label: '否', value: 'N' } ], baseInfoForm: { col19:''} }, validations: { baseInfoForm: { col19:{ required: required }, kitchenTime:{ required: requiredIf(function(baseInfoForm) { return baseInfoForm.col19 == 'Y' })} } } }) </script>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue.js 實(shí)現(xiàn)點(diǎn)擊展開(kāi)收起動(dòng)畫(huà)效果
這篇文章主要介紹了vue.js 實(shí)現(xiàn)點(diǎn)擊展開(kāi)收起動(dòng)畫(huà)效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07vue+axios實(shí)現(xiàn)圖片上傳識(shí)別人臉的示例代碼
本文主要介紹了vue+axios實(shí)現(xiàn)圖片上傳識(shí)別人臉,這里采用的是vant的文件上傳組件,通過(guò)上傳圖片后端識(shí)別圖片里的人臉,感興趣的可以了解一下2021-11-11vue-cli項(xiàng)目修改文件熱重載失效的解決方法
今天小編就為大家分享一篇vue-cli項(xiàng)目修改文件熱重載失效的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue實(shí)現(xiàn)實(shí)時(shí)上傳文件進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)實(shí)時(shí)上傳文件進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue之el-menu-item如何更改導(dǎo)航菜單欄選中的背景顏色
這篇文章主要介紹了vue之el-menu-item如何更改導(dǎo)航菜單欄選中的背景顏色問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05