1.0.5 • Published 1 month ago

@tanzhenxing/zx-form v1.0.5

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

zx-form 表单组件

表单包含输入框、单选框、下拉选择、多选框等用户输入的组件,用于收集、校验和提交数据。

基础用法

<zx-form :model="form" :rules="rules" label-width="150rpx">
  <zx-form-item label="姓名" prop="name">
    <zx-input v-model="form.name" placeholder="请输入姓名"></zx-input>
  </zx-form-item>
  <zx-form-item label="邮箱" prop="email">
    <zx-input v-model="form.email" placeholder="请输入邮箱"></zx-input>
  </zx-form-item>
  <zx-form-item>
    <zx-button type="primary" @click="submitForm">提交</zx-button>
    <zx-button @click="resetForm">重置</zx-button>
  </zx-form-item>
</zx-form>

<script setup>
import { ref, reactive } from 'vue';

const form = reactive({
  name: '',
  email: ''
});

const rules = {
  name: [
    { required: true, message: '请输入姓名', trigger: 'blur' }
  ],
  email: [
    { required: true, message: '请输入邮箱', trigger: 'blur' },
    { pattern: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, message: '请输入正确的邮箱格式', trigger: 'blur' }
  ]
};

const formRef = ref(null);

function submitForm() {
  formRef.value.validate((valid, invalidFields) => {
    if (valid) {
      console.log('表单验证通过');
    } else {
      console.log('表单验证失败', invalidFields);
    }
  });
}

function resetForm() {
  formRef.value.resetFields();
}
</script>

行内表单

inline 属性设置为 true 可以让表单域变为行内的表单域。

<zx-form :model="form" :rules="rules" inline>
  <zx-form-item label="姓名" prop="name">
    <zx-input v-model="form.name"></zx-input>
  </zx-form-item>
  <zx-form-item label="邮箱" prop="email">
    <zx-input v-model="form.email"></zx-input>
  </zx-form-item>
  <zx-form-item>
    <zx-button type="primary">查询</zx-button>
  </zx-form-item>
</zx-form>

对齐方式

通过设置 label-position 属性可以改变表单域标签的位置,可选值为:topleftright

<zx-form :model="form" label-position="top">
  <!-- 表单项 -->
</zx-form>

表单验证

zx-form 组件提供了表单验证功能,通过 rules 属性传入验证规则。

const rules = {
  name: [
    { required: true, message: '请输入姓名', trigger: 'blur' }
  ],
  email: [
    { required: true, message: '请输入邮箱', trigger: 'blur' },
    { pattern: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, message: '请输入正确的邮箱格式', trigger: 'blur' }
  ],
  age: [
    { type: 'number', message: '年龄必须为数字值', trigger: 'blur' }
  ]
};

zx-form 属性

属性名说明类型默认值
model表单数据对象Object
rules表单验证规则Object
inline行内表单模式Booleanfalse
label-position表单域标签的位置,可选值:right/left/topStringleft
label-width表单域标签的宽度String/Number100rpx
disabled是否禁用该表单内的所有组件Booleanfalse
size用于控制该表单内组件的尺寸,可选值:large/default/smallStringdefault
hide-required-asterisk是否隐藏必填字段的标签旁边的红色星号Booleanfalse
validate-on-rule-change是否在 rules 属性改变后立即触发一次验证Booleantrue
scroll-to-error当校验失败时,是否滚动到第一个错误表单项Booleanfalse

zx-form 事件

事件名说明回调参数
submit表单提交时触发event: Event
reset表单重置时触发event: Event
validate任一表单项被校验后触发prop: 被校验的表单项名称, valid: 校验是否通过, message: 错误消息

zx-form 方法

方法名说明参数
validate对整个表单进行校验callback: 回调函数,参数为(valid, invalidFields)
validateField对部分表单字段进行校验props: 字段名称数组, callback: 回调函数
resetFields对整个表单进行重置,将所有字段值重置为初始值并移除校验结果-
clearValidate移除表单项的校验结果props: 字段名称数组,不传则移除所有

zx-form-item 属性

属性名说明类型默认值
prop表单域 model 字段String
label标签文本String
label-width表单域标签的的宽度String/Number
required是否必填,如不设置,则会根据校验规则自动生成Booleanfalse
rules表单验证规则Object/Array
error表单域验证错误信息String
show-message是否显示校验错误信息Booleantrue
size用于控制该表单域下组件的尺寸String

zx-form-item 方法

方法名说明参数
validate对该表单项进行校验callback: 回调函数,参数为(error, field)
resetField对该表单项进行重置,将其值重置为初始值并移除校验结果-
clearValidate移除该表单项的校验结果-