
Product
Introducing Pull Request Stories to Help Security Teams Track Supply Chain Risks
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
el-form-valid-item
Advanced tools
这是一款基于VUE3 + Element Puls开发封装表单验证组件,可直接替代Element的<el-form-item>
组件,主要是想让表单验证使用起来更简单方便。
VUE2 + ElementUI的请选择安装 el-form-valid-item@1.x 版本
# 安装VUE3版本
npm install el-form-vaild-item --save
yarn add el-form-vaild-item --save
# 安装VUE2版本
npm install el-form-vaild-item@1.x --save
yarn add el-form-vaild-item@1.x --save
// main.js
import Vue from 'vue'
import ElFormValidItem from 'el-form-valid-item'
import FormRules from './formRules'
// 扩展自定义表单验证规则
ElFormValidItem.extendRules(FormRules)
// 使用 ElFormRuleItem
Vue.use(ElFormValidItem)
// template
// ...
<el-form-valid-item label="输入框1:" prop="iptVal1" rules="required|number">
<el-input v-model="iptVal1" />
</el-form-valid-item>
// or
<el-form-valid-item label="输入框2:" prop="iptVal2" :rules="['required', 'maxLen:8']">
<el-input v-model="iptVal2" />
</el-form-valid-item>
// ...
规则名称 | 说明 | 是否带参数 | 提示消息 |
---|---|---|---|
required | 是否必填 | 否 | xxx不能为空 |
number | 数字内容 | 否 | xxx必须时数字 |
maxLen | 最大长度 | 是 | xxx的长度不能小于x位字符 |
minLen | 最小长度 | 是 | xxx的长度不能大于x位字符 |
参数使用 规则名称:参数
如字段长度不能超过8位 rules="maxLen:8"
<!-- template -->
<template>
<el-form ref="myForm" :model="formData">
<el-form-valid-item label="选择框:" prop="selectVal" rules="required" label-width="90px">
<el-select v-model="formData.selectVal" clearable style="width:100%;">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-valid-item>
<el-form-valid-item label="用户名:" prop="iptVal1" rules="required|maxLen:8" label-width="90px">
<el-input v-model="formData.iptVal1" placeholder="请输入用户名,最长8位"></el-input>
</el-form-valid-item>
<el-form-valid-item label="年龄:" prop="iptVal2" :rules="['required', 'number']" label-width="90px">
<el-input v-model="formData.iptVal2" placeholder="请输入数字"></el-input>
</el-form-valid-item>
<el-form-valid-item label-width="90px" style="text-align:left;">
<el-button type="success" @click="submitForm('myForm')">提交</el-button>
<el-button @click="resetForm('myForm')">重置</el-button>
</el-form-valid-item>
</el-form>
</template>
<!-- js -->
<script>
export default {
data () {
return {
formData: {
iptVal: '',
selectVal: ''
},
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}]
}
},
methods: {
submitForm() {
this.$refs.myForm.validate((valid) => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm() {
this.$refs.myForm.resetFields();
}
}
}
</script>
可以通过field
属性来修改输入框名称,不传field
时,会使用label的值来做输入框名称
<!-- template -->
<template>
<!-- .... -->
<el-form-valid-item label="输入框:" prop="iptVal" rules="required" label-width="90px">
<el-input v-model="iptVal"></el-input>
<!-- 提示内容:输入框不能为空 -->
</el-form-valid-item>
<el-form-valid-item label="输入框:" prop="iptVal" field="年龄" rules="required" label-width="90px">
<el-input v-model="iptVal" ></el-input>
<!-- 提示内容:年龄不能为空 -->
</el-form-valid-item>
<!-- .... -->
</template>
可以通过trigger
属性来修改触发校验的方式,多个触发方式用数字的方式传递(如:['blur', 'change']),默认['blur', 'change']
<!-- template -->
<template>
<!-- .... 失去焦点时触发校验 ... -->
<el-form-valid-item label="输入框:" prop="iptVal" rules="required|number" trigger="blur" label-width="90px">
<el-input v-model="iptVal" placeholder="请输入数字"></el-input>
</el-form-valid-item>
<!-- .... -->
</template>
可通过 validator
属性增加专属校验规则,默认先校验 rules
的规则再校验 validator
<!-- template -->
<template>
<!-- .... -->
<el-form-valid-item label="用户名:" prop="iptVal" rules="required|maxLen:8" :validator="validator" label-width="90px">
<el-input v-model="iptVal" placeholder="请输入用户名,最长8位,只能填中文"></el-input>
</el-form-valid-item>
<!-- .... -->
</template>
<!-- js -->
<script>
export default {
data () {
return {
iptVal: ''
}
},
methods: {
validator(rule, value, cb) {
if (/^[\u4e00-\u9fa5]$/.test(val)) {
cb(new Error('用户名只能是中文'))
} else {
cb()
}
}
}
}
</script>
// formRules.js 自定义规则
/**
* // 规则格式
* 规则名称: {
* validate(param) { return true or false }
* getMessage(param) { return '提示内容' }
*
* // 参数说明
* param {
* value: '', // 输入框的值
* field: '', // 字段名称
* data: '' // 规则上带的参数(冒号后的内容)
* }
*
* } */
export default {
// 整数校验
int: {
validate: ({ value }) => !/^(-)?\d+$/.test(value),
getMessage: ({ field }) => `${field}必须是整数`
}
// 可单独提交一个属性来覆盖原来的规则的某个属
required: {
getMessage: ({ field }) => `请选择${field}`
}
// 可自定义参数,根据不同参数返回不同的结果
required: {
getMessage: ({ field, data }) => data === '1' ? `${field}不能为空` : `请选择${field}`
}
}
validate(param)
getMessage(param)
的 param 参数
字段 | 说明 |
---|---|
value | 检验的内容(如输入框的值) |
field | 字段名称 |
data | 规则上带的参数(冒号后的内容) |
el-form-valid-item
会向外抛出三个类型,需要的时候可以直接导入使用
imort { FormRuleType, FormRuleItemType, FormRuleParamType } from 'el-form-valid-item'
参数 | 描述 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
rules | 表单验证规则,多个规则可用` | `隔开或者用数组方式传入 | string / array | -- |
validator | 自定义检验函数,可参考 async-validator | function | -- | -- |
field | 字段名称,验证提示消息用到 | string | -- | label的值 |
trigger | 触发类型,多个类型用数组方式传入 | string / array | -- | ['blur', 'change'] |
prop | 表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的 | string | 传入 Form 组件的 model 中的字段 | -- |
label | 标签文本 | string | -- | -- |
label-width | 表单域标签的的宽度,例如 '50px'。支持 auto 。 | string | -- | -- |
required | 是否必填,如不设置,则会根据校验规则自动生成 | boolean | -- | false |
error | 表单域验证错误信息, 设置该值会使表单验证状态变为error ,并显示该错误信息 | string | -- | -- |
show-message | 是否显示校验错误信息 | boolean | -- | true |
inline-message | 以行内形式展示校验信息 | boolean | -- | false |
size | 用于控制该表单域下组件的尺寸 | string | medium / small / mini | -- |
FAQs
A form component with verification for ElementUI
We found that el-form-valid-item demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.