小編給大家分享一下ant-design-vue如何實(shí)現(xiàn)表格內(nèi)部字段驗(yàn)證功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
目前創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、嘉魚(yú)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。表格內(nèi) column 可輸入的需求還是很常見(jiàn)的,尤其有一些業(yè)務(wù)場(chǎng)景就是表單內(nèi)部有一個(gè)表格,然后表格的某些列是個(gè)進(jìn)行輸入的,就像下面這樣
下單數(shù)量 內(nèi)容不能為空
下單數(shù)量 必須輸入正整數(shù)
翻閱 ant-design-vue 官網(wǎng)并沒(méi)有發(fā)現(xiàn)說(shuō)表單內(nèi)表格字段驗(yàn)證的方案,但是有一個(gè) 自行處理表單數(shù)據(jù) 的介紹
那我們是不是可以參考這個(gè)方案去實(shí)現(xiàn)咱自己的業(yè)務(wù)需求呢,下面就開(kāi)始說(shuō)一下實(shí)現(xiàn)方案
<a-table :columns="columns" bordered :rowKey="col => col.id" :dataSource="tableData" > <a-form-item :label-col="{ xs: { span: 0 }, sm: { span: 0 }, }" :wrapper-col="{ xs: { span: 24 }, sm: { span: 24 }, }" :validate-status="getFildStatus(record.id).validateStatus" :help="getFildStatus(record.id).errorMsg" slot="goodModelCount" slot-scope="text, record"> <a-input :min="1" v-model="text.goodModelCount" @change="handleChange(text.goodModelCount, record.id)" /> </a-form-item> <div slot="action" slot-scope="text, record"> <a href="javascript:;" rel="external nofollow" ><a-icon type="delete" /></a> </div> </a-table> <script> const columns = [ { title: '商品名稱(chēng)', dataIndex: 'id', align: 'center' }, { title: '商品型號(hào)', dataIndex: 'account', align: 'center' }, { title: '型號(hào)價(jià)格', dataIndex: 'area', align: 'center' }, { title: '下單數(shù)量', key: 'goodModelCount', align: 'center', width: '200px', scopedSlots: { customRender: 'goodModelCount' }, align: 'center', }, { title: '操作', scopedSlots: { customRender: 'action' }, width: '150px', align: 'center',} ] function validatePrimeNumber(number) { if (/^[1-9]\d*|0$/.test(number)) { return { validateStatus: 'success', errorMsg: '', }; } return { validateStatus: 'error', errorMsg: '下單數(shù)量不能為空', }; } export default { name: 'order-dialog', data() { return { visible: true, labelCol: { xs: { span: 24 }, sm: { span: 7 }, }, wrapperCol: { xs: { span: 24 }, sm: { span: 12 }, }, form: this.$form.createForm(this), validatorRules: { consigneeName: { rules: [ { required: true, message: '請(qǐng)輸入收貨人姓名' } ] }, consigneePhone: { rules: [ { required: true, message: '請(qǐng)輸入收貨人聯(lián)系電話(huà)' } ] }, addresseeAddressDetail: { rules: [ { required: true, message: '請(qǐng)輸入收貨地址詳情' } ] } }, columns: columns, tableData: [{ id: 1, account: 123, area: 123, goodModelCount: 3434}, { id: 2, account: 123, area: 123, goodModelCount: 111}], goodModelCountData: [] } }, methods: { getFildStatus(id) { const data = this.goodModelCountData.filter(item => id === item.id)[0] if (data) { return data } else { return { errorMsg: '', validateStatus: 'success' } } }, handleChange(value, id) { const newData = [...this.tableData]; const target = newData.filter(item => item.id === id)[0] if (target) { const { errorMsg, validateStatus } = validatePrimeNumber(value) let flag = true this.goodModelCountData.forEach(val => { if (val.id === id) { flag = false val.errorMsg = errorMsg, val.validateStatus = validateStatus } }) if (flag) { this.goodModelCountData.push({ id, errorMsg, validateStatus }) } target.goodModelCount = value this.tableData = newData } }, handleOk() { this.visible = false } } } </script>
重點(diǎn)注意兩個(gè)屬性:
validate-status 校驗(yàn)狀態(tài),可選 ‘success', ‘warning', ‘error', ‘validating'
help 設(shè)置校驗(yàn)文案
在 vue 里面是允許我們?cè)趯傩岳锩嬉?函數(shù) 的形式返回屬性的,所以我們可以把驗(yàn)證規(guī)則放到函數(shù)里里面 validatePrimeNumber (函數(shù)名字最好還是語(yǔ)義化明確一些,我這邊直接復(fù)制的官方文檔上的)
需要進(jìn)行驗(yàn)證的字段(需要在 a-table 標(biāo)簽內(nèi)部)
<a-form-item :label-col="{ xs: { span: 0 }, sm: { span: 0 }, }" :wrapper-col="{ xs: { span: 24 }, sm: { span: 24 }, }" :validate-status="getFildStatus(record.id).validateStatus" :help="getFildStatus(record.id).errorMsg" slot="goodModelCount" slot-scope="text, record"> <a-input :min="1" v-model="text.goodModelCount" @change="handleChange(text.goodModelCount, record.id)" /> </a-form-item>
當(dāng)我們輸入框進(jìn)行輸入的時(shí)候我們就會(huì)出發(fā) handleChange 方法,在方法里里面我們?nèi)ミM(jìn)行輸入內(nèi)容的驗(yàn)證,然后根據(jù)id從 getFildStatus 找到當(dāng)前對(duì)象,然后進(jìn)行驗(yàn)證。
如果列表內(nèi)有多列需要進(jìn)行驗(yàn)證,那么就需要主要這個(gè)數(shù)據(jù)格式怎么定了了,根據(jù)實(shí)際需求進(jìn)行參考
以上是“ant-design-vue如何實(shí)現(xiàn)表格內(nèi)部字段驗(yàn)證功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)標(biāo)題:ant-design-vue如何實(shí)現(xiàn)表格內(nèi)部字段驗(yàn)證功能-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://jinyejixie.com/article8/csdgop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、ChatGPT、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容