国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Vue自定義表單內(nèi)容檢查rules實(shí)例

瀏覽:68日期:2022-11-09 09:52:37

先看個(gè)例子

組件

<el-form-item label='手機(jī)號(hào):' prop='phone_number'> <el-input v-model='formPerson.phone_number'></el-input></el-form-item>

script中

export default { data() { var validateMobilePhone = (rule, value, callback) => { if (value === ’’) { callback(new Error(’負(fù)責(zé)人手機(jī)號(hào)不可為空’)); } else { if (value !== ’’) { var reg = /^1[3456789]d{9}$/; if (!reg.test(value)) { callback(new Error(’請(qǐng)輸入有效的手機(jī)號(hào)碼’)); } else { callback(); } } } }; return{ formPerson: { phone_number: ’’, }, rules: { phone_number: [ {validator: validateMobilePhone, trigger: ’blur’} ] }, } }}

遇到的坑

在組件中【開(kāi)始寫(xiě)的時(shí)候prop自定的名字】

<el-form-item label='手機(jī)號(hào):' prop='phone'> <el-input v-model='formPerson.phone_number'></el-input></el-form-item>

rules中

rules: { phone: [ {validator: validateMobilePhone, trigger: ’blur’} ]}

碰到的坑

當(dāng)輸入正確的手機(jī)號(hào)時(shí),顯示為錯(cuò)誤,發(fā)現(xiàn)value并沒(méi)有傳過(guò)來(lái),為undefined

解決:

prop寫(xiě)成和數(shù)據(jù)中的參數(shù)的名稱一樣,即phone_number

補(bǔ)充知識(shí):用vue自定義指令v-validated寫(xiě)一個(gè)全局表單驗(yàn)證

由于不想在單vue文件里用blur等等設(shè)置表單驗(yàn)證并顯示驗(yàn)證失敗的信息,因此思考并封裝了一個(gè)全局自定義指令。

獻(xiàn)上我的代碼。

html

<div class='form-section'> <p>First Name</p> <input type='text' v-model=’form.username’ v-validated:username='[’username’,form.username]' placeholder='' > <div class='error'></div> </div> <div class='form-section'> <p>Last Name</p> <input type='text' v-model=’form.secondname’ placeholder=''> <div class='error'></div> </div> <div class='form-section'> <p>Email</p> <input type='email' v-model=’form.email’ v-validated:email='[’email’,form.email]' placeholder=''> <div class='error'></div> </div> <div class='form-section'> <p>Password</p> <input type='password' v-model=’form.password’ v-validated:password='[’password’,form.password]' autocomplete placeholder=''> <div class='error'></div> </div>

在input上掛載v-validated指令,向指令傳輸 ‘username’的校驗(yàn)類型,和form.username的校驗(yàn)數(shù)據(jù)。

現(xiàn)在封裝v-validated指令

validated.js

import Vue from ’vue’/** * 校驗(yàn)失敗*/function testError (el) { el.style.borderColor = ’#d20000’ el.style.backgroundColor = ’#fff8f8’}/** * 校驗(yàn)成功*/function testCorrect (el) { el.style.borderColor = ’#a3a3a3’ el.nextElementSibling.innerHTML = ’’ el.style.backgroundColor = ’transparent’}/** * 校驗(yàn)用戶名 * */function testUserName (username, el) { if (/^w{3,30}$/g.test(username)) { testCorrect(el) return true } else { testError(el) el.nextElementSibling.innerHTML = ’Username must be 3 to 30 characters’ return false }}/** * 校驗(yàn)郵箱 * */function testEmail (email, el) { if (/^[w-]+@[w-]+(.[w-]+)+$/g.test(email)) { testCorrect(el) return true } else { testError(el) el.nextElementSibling.innerHTML = ’Mailbox format is not correct!’ return false }}/** * 校驗(yàn)密碼 * */function testPwd (pwd, el) { if (/^w{6,30}$/g.test(pwd)) { testCorrect(el) return true } else { testError(el) el.nextElementSibling.innerHTML = ’Password must be 6 to 30 characters’ return false }}Vue.directive(’validated’, { inserted (el, binding) { // 綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用 el.addEventListener(’blur’, () => { switch (binding.value[0]) { case ’username’ : testUserName(binding.def[binding.rawName], el); break case ’email’ : testEmail(binding.def[binding.rawName], el); break case ’password’ : testPwd(binding.def[binding.rawName], el); break } }) }, update: function (el, binding, vNode) { // 更新元素信息時(shí)調(diào)用 binding.def[binding.rawName] = binding.value[1] }})export default { init () { console.log(’*** validated installed ***’) }}

由于沒(méi)有找到官方鉤子之間傳遞數(shù)據(jù)的方法,所以自己看著用binding.def下定義updated來(lái)作為傳遞數(shù)據(jù),

inserted是節(jié)點(diǎn)插入時(shí)就調(diào)用一次。在這里做元素blur的監(jiān)聽(tīng),動(dòng)態(tài)數(shù)據(jù)由update刷新。

修正:我只定義一個(gè)updated會(huì)出現(xiàn)多個(gè)更新數(shù)據(jù)共用一個(gè)參數(shù)名,導(dǎo)致數(shù)據(jù)錯(cuò)亂。

所以我用binding.rawName做指針,放入binding.def下,實(shí)現(xiàn)一個(gè)頁(yè)面多個(gè)數(shù)據(jù)多個(gè)處理,因?yàn)閡pdate鉤子是頁(yè)面上的任意改動(dòng)都會(huì)觸發(fā),而不是當(dāng)前掛載指令的dom對(duì)象變化才會(huì)跟著變化。

最后將這個(gè)文件放入main.js

main.js

import validated from ’@/dorajs/validated.js’

Vue.use(validated)

效果如下

Vue自定義表單內(nèi)容檢查rules實(shí)例

Vue自定義表單內(nèi)容檢查rules實(shí)例

Vue自定義表單內(nèi)容檢查rules實(shí)例

完美解決!

以上這篇Vue自定義表單內(nèi)容檢查rules實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 日本中文字幕不卡免费视频 | 亚洲伊人色综合网站小说 | 永久毛片 | 干综合网 | 日本久久久久 | 国产欧美一区二区三区免费 | 美女亚洲视频 | 亚洲欧美日韩高清 | 91最新地址永久入口 | 日本高清乱偷www | a级毛片免费观看视频 | 免费在线观看a级毛片 | 日本黄色免费大片 | 国产精品高清一区二区 | 国产高清精品一级毛片 | 午夜在线视频一区二区三区 | 国产一级毛片网站 | 欧美一区二区免费 | 全免费a级毛片免费看 | 91av视频在线 | 国产成人精品999在线 | 亚洲人妖女同在线播放 | 九九视频在线观看视频23 | 福利一区三区 | 特级一级全黄毛片免费 | 毛片网站在线播放 | 一区二区三区四区产品乱码伦 | 国产亚洲精品国产一区 | 91久久精品国产91久久性色tv | 国产欧美亚洲精品a | 中文字幕乱码中文乱码综合 | 怡红院亚洲红怡院天堂麻豆 | 国产成人免费不卡在线观看 | 国产午夜亚洲精品 | 2000xxxxav影院| 免费一级特黄3大片视频 | 国产成人精品一区二区免费 | 秘书高跟黑色丝袜国产91在线 | 国产日韩欧美精品 | 97公开免费视频 | 100000免费啪啪18免进 |