前言
我这边表格
一、表格校验
1、表格验证
前提:我这边qty这一列表格使用的是拥有编辑功能
<s-table ref="multipleVenMaterTable" border resizable show-overflow height="300" :data="venMaterData" :edit-rules="validRules" :edit-config="{trigger: 'dblclick', mode: 'row'}" @selection-change="handleSelectionVenMaterChange" >
<s-table-column type="checkbox" width="60" />
<s-table-column :label="$t('wms.receipt.materialNum')" field="materialNum" />
<s-table-column :label="$t('wms.receipt.materialName')" field="materialName" />
<s-table-column :label="$t('wms.receipt.unit')" field="unit" />
<s-table-column :label="$t('wms.receipt.qty')" field="qty" :rules="threeFormRules.factory" :edit-render="{name: 'input'}" />
</s-table>
// data数据
validRules: {
qty: [
{ required: true, message: '名称必须填写' }
]
}
// 事件
threeVenMaterConmmit() {
// 获取选中行数
const selectRecords = this.$refs.multipleVenMaterTable.selection
if (selectRecords.length > 0) {
this.$refs.multipleVenMaterTable.validate(selectRecords, valid => {
if (valid) {
this.$XModal.message({ status: 'success', message: '校验成功!' })
} else {
this.$XModal.message({ status: 'error', message: '校验不通过!' })
}
})
} else {
this.$XModal.message({ status: 'warning', message: '未选中数据!' })
}
}
二、勾选el-table几条数据迁移到另一个el-table
<s-table
ref="multipleVenMaterTable" border resizable show-overflow height="300" :data="venMaterData" :edit-config="{trigger: 'dblclick', mode: 'row'}" @selection-change="handleSelectionVenMaterChange" >
<s-table-column type="checkbox" width="60" />
<s-table-column :label="$t('wms.receipt.materialNum')" field="materialNum" />
<s-table-column :label="$t('wms.receipt.unit')" field="unit" />
<s-table-column :label="$t('wms.receipt.qty')" field="qty" :edit-render="{name: 'input'}" />
</s-table>
<!-- 上面edit-config是我们自己的双击输入一个功能,大家忽视,这里有一个checkbox勾选 -->
data数据
enMatervalidRules: {
qty: [
{ required: true, message: '可收数量必须填写', trigger: 'change' }
]
}
方法
threeVenMaterConmmit() {
const selectRecords = this.$refs.multipleVenMaterTable.selection
this.$refs.multipleVenMaterTable.validate(selectRecords, valid => {
if (valid) {
this.$XModal.message({ status: 'success', message: '校验通过!' })
} else {
this.$XModal.message({ status: 'error', message: '校验不通过!' })
}
})
}
三、表单校验
1、校验表单必填
<el-form ref="threeForm" class="stepThreeDiv" :rules="threeFormRules" :inline="true" :model="searchForm">
<el-form-item :label=" $t('wms.receipt.factoryCode') " prop="factoryCode" :rules="threeFormRules.factory" >
<el-select v-model="searchForm.factoryCode" clearable filterable :placeholder="$t('common.select')" @focus="getFactoryName" >
<el-option label="ALL" value="" />
<el-option v-for="item in factoryCodes" :key="item.factoryCode" :label="item.factoryName"
:value="item.factoryCode" />
</el-select>
</el-form-item>
</el-form>
// data数据源:
searchFormRules: {
createUsers: [{ required: true, message: 'createUser不能为空', trigger: 'blur' }]
}
// 事件
this.$refs.threeForm.validate(valid => {
if (valid) {
console.log('通过')
console.log(this.form.tableData)
}
})
2、正则校验
rules: {
appActiveUserNum: [{
trigger: 'blur',
message: '输入不正规,输入不正规,最多9位数字,最多2位小数',
pattern: /^([1-9]\d{0,8})([.]\d{1,2})?$|^0[.]([1-9]\d{0,1}|[0-9][1-9])$/
}]
}
3、自定义方法校验
rules: {
numValue: [{ trigger: 'blur', validator: validateFloatNum }]
},
export const validateFloatNum = (rule, value, callback) => {
let reg = /^([0-9]\d{0,8})([.]\d{1,7})?$|^0[.]([0-9]\d{0,1}|[0-9][0-9])$/
if (!reg.test(value)) {
callback(new Error('输入不正规,最多9位数字,最多7位小数'))
} else {
callback()
}
}
四、校验配置
4.1、type
type:输⼊类型,string
type可选属性:number,boolean,string,integer,float,array,enum,url,email,method,regexp,object,date,hex,any......
boolean:输⼊值为boolean
...
integer:整数(输⼊值⾮数字⽆效)
float:浮点数
array:数组
enum:枚举({type: 'enum', enum: ['aaa', 'bbb'], message: `不存在enum中`, trigger: 'change'})
...
any:任意值
4.2、required
required:是否必填,boolean
true:该表单为必填项
false:不必填项
4.3、Pattern
pattern:正则校验,正则表达式
//moneyNum:[{pattern: /^[0-9]*$/, message: `请输⼊数字`, trigger: 'blur'}]
4.4、min、max
min、max:最⼩,最⼤多少位,number
//minmax: [{min: 3, max: 8, message: '请输⼊3-8位', trigger: 'blur'}]
4.5、len
len:输⼊位数,number
//length: [ {len: 5, message: '请输⼊5位', trigger: 'blur'}]
4.6、whitespace
whitespace:验证是否只有空格,boolean
4.7、Messages
Messages:校验不通过提⽰,string
4.8、validator
validator:指定字段⾃定义验证功能,function
let numberLengthSix = (rule, value, callback) => {
if(String(value).length > 6) {
callback('超出限制')
} else {
callback()
}
}
...//
//numberLengthSix: [{validator: numberLengthSix, trigger: 'blur'}
4.9、trigger
trigger:触发事件,string
blur:失去焦点触发
change:发⽣改变触发