el-form-表单

 el-form

  • model:绑定表数据对象

  • rules:表单验证规则

  • size: 用于控制该表单内组件的尺寸 medium / small / mini

  • ref:用于获取组件dom

<el-form
        ref="form"
        :model="formModel"
        :rules="rules"
        size="large"
        autocomplete="off"
          ></el-form>

表行el-form-item

 <el-form-item><h1>登陆</h1></el-form-item>

输入框el-form-input

  • prop="username":绑定rules中的某个规则

  • formModel.username:绑定表数据对象中的数据

  • :prefix-icon:绑定图标

  • placeholder:灰色字体

 <el-form-item prop="username">
          <el-input
            v-model="formModel.username"
            :prefix-icon="User"
            placeholder="请输入用户名"
          ></el-input>
        </el-form-item>

校验规则

  • (1) el-form => :model="formModel" 绑定的整个form的数据对象{xxx,xxx,xxx}

  • (2) el-form => :rules="rules" 绑定的整个rules的规则对象{xxx,xxx,xxx}

  • (3) 表单元素 => v-model ="ruleForm.xxx" 给表单元素,绑定form的子属性

  • (4) prop配置生效的是哪个校验规则 (和rules中的字段要对应)

 设置表单form数据对象

//整个的用于提交的form对象 注意参数需要跟接口参数命名一致
const formModel = ref({
  username: '',
  password: '',
  repassword: ''
})

 设置表单校验规则

  • 1.非空校验:required:true,message:消息提示,trigger:触发校验的事件

  • 2.长度校验:min:xx,max:xx

  • 3.正则校验:pattern:正则校验 \S为非空字符

  • 4.自定义校验:自己写逻辑校验(校验信息)

  • validator:(rule,value,callback)

(1)rule当前校验规则相关的信息

(2)value所校验的表单元素目前的表单值

(3)callback 无论成功还是失败,都需要callback回调

callback() 校验成功

callback(new Error(错误信息)) 校验失败

const rules = {
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 5, max: 10, message: '用户名必须是5-10位的字符', trigger: 'blur' }
  ],
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    {
      pattern: /^\S{5,16}$/,
      message: '密码必须是6-15为的字符',
      trigger: 'blur'
    }
  ],
  repassword: [
    { required: true, message: '请再次输入密码', trigger: 'blur' },
    {
      pattern: /^\S{6,15}$/,
      message: '密码必须是6-15的非空字符',
      trigger: 'blur'
    },
    {
      validator: (rule, value, callback) => {
        if (value === formModel.value.password) {
          callback()
          console.log(rule)
        } else {
          callback(new Error('两次输入密码不一致'))
        }
      },
      trigger: 'blur'
    }
  ]
}

预校验

1.设置按钮触发预校验事件

<el-button type="primary" @click="register" class="btn">注册</el-button>

2.触发预校验

// 注册按钮点击事件
const register = async () => {
    //预校验
  await form.value.validate()
    //发起请求
  await userRegisterService(formModel.value)
    //消息提示
  ElMessage.success('注册成功')
}

可以使用`el-form`表单组件嵌套另一个`el-form`表单组件。这种嵌套可以用于更复杂的表单布局和组织。 以下是一个示例代码,演示了如何嵌套`el-form`表单: ```vue <template> <el-form ref="outerForm" :model="outerForm" label-width="100px"> <el-form-item label="外层表单项"> <el-input v-model="outerForm.field1"></el-input> </el-form-item> <el-form ref="innerForm" :model="innerForm" label-width="100px"> <el-form-item label="内层表单项"> <el-input v-model="innerForm.field2"></el-input> </el-form-item> </el-form> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { outerForm: { field1: '' }, innerForm: { field2: '' } }; }, methods: { submitForm() { this.$refs.outerForm.validate((validOuterForm) => { if (validOuterForm) { // 外层表单校验通过 this.$refs.innerForm.validate((validInnerForm) => { if (validInnerForm) { // 内层表单校验通过,提交数据 console.log(this.outerForm); console.log(this.innerForm); } else { // 内层表单校验不通过 return false; } }); } else { // 外层表单校验不通过 return false; } }); } } }; </script> ``` 在上面的示例中,外层表单和内层表单都使用了`el-form`组件,并且分别定义了自己的数据模型(`outerForm`和`innerForm`)。你可以根据实际需要添加更多的表单项。 请注意,在提交表单时,需要先校验外层表单的有效性,然后再校验内层表单的有效性。只有当两个表单都校验通过时,才会提交数据。 希望这个例子对你有所帮助!如果你还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值