91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ant-design-vue如何實現表格內部字段驗證功能

發布時間:2021-05-20 14:46:24 來源:億速云 閱讀:1032 作者:小新 欄目:web開發

小編給大家分享一下ant-design-vue如何實現表格內部字段驗證功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

表格內 column 可輸入的需求還是很常見的,尤其有一些業務場景就是表單內部有一個表格,然后表格的某些列是個進行輸入的,就像下面這樣

  • 下單數量 內容不能為空

  • 下單數量 必須輸入正整數

ant-design-vue如何實現表格內部字段驗證功能

翻閱 ant-design-vue 官網并沒有發現說表單內表格字段驗證的方案,但是有一個 自行處理表單數據 的介紹

ant-design-vue如何實現表格內部字段驗證功能

那我們是不是可以參考這個方案去實現咱自己的業務需求呢,下面就開始說一下實現方案

<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: '商品名稱', dataIndex: 'id', align: 'center' },
 { title: '商品型號', dataIndex: 'account', align: 'center' },
 { title: '型號價格', dataIndex: 'area', align: 'center' },
 { title: '下單數量', 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: '下單數量不能為空',
 };
}
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: '請輸入收貨人姓名' }
     ]
    },
    consigneePhone: {
     rules: [
      { required: true, message: '請輸入收貨人聯系電話' }
     ]
    },
    addresseeAddressDetail: {
     rules: [
      { required: true, message: '請輸入收貨地址詳情' }
     ]
    }
   },
   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>

重點注意兩個屬性:

  • validate-status 校驗狀態,可選 ‘success', ‘warning', ‘error', ‘validating'

  • help 設置校驗文案

在 vue 里面是允許我們在屬性里面以 函數 的形式返回屬性的,所以我們可以把驗證規則放到函數里里面 validatePrimeNumber (函數名字最好還是語義化明確一些,我這邊直接復制的官方文檔上的)

需要進行驗證的字段(需要在 a-table 標簽內部)

<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>

當我們輸入框進行輸入的時候我們就會出發 handleChange 方法,在方法里里面我們去進行輸入內容的驗證,然后根據id從 getFildStatus 找到當前對象,然后進行驗證。

如果列表內有多列需要進行驗證,那么就需要主要這個數據格式怎么定了了,根據實際需求進行參考

以上是“ant-design-vue如何實現表格內部字段驗證功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寿阳县| 赞皇县| 泊头市| 兴宁市| 建水县| 邓州市| 耿马| 黑水县| 宁津县| 梁河县| 长丰县| 九龙县| 德令哈市| 东方市| 安平县| 自贡市| 永德县| 军事| 天门市| 浏阳市| 武隆县| 平利县| 三都| 运城市| 图片| 礼泉县| 江达县| 惠水县| 广南县| 洛阳市| 新乐市| 澄江县| 池州市| 花莲市| 小金县| 永修县| 台南县| 蒙山县| 积石山| 长顺县| 呼伦贝尔市|