Element动态表单和动态验证

<el-dialog title="修改" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false">
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item :label="key" v-for="(value,key,index) in  form" :prop="key">
          <el-input v-model="form[key]" placeholder="请输入" maxlength="35"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submit">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
 </el-dialog>
for(let i in list){
            this.$set(this.rules,list[i].key,[{ required: true, message: attributeList[i].key+'不能为空', trigger: 'blur' }])
            this.$set(this.form,list[i].key,list[i].value)
           }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3和Element Plus可以很方便地实现动态表单。下面是一个简单的示例代码: ``` <template> <form @submit.prevent="submitForm"> <el-form :model="formData" :rules="formRules" ref="form"> <el-form-item v-for="(field, index) in formFields" :key="index" :label="field.label" :prop="field.name"> <template v-if="field.type === 'text'"> <el-input v-model="formData[field.name]" :placeholder="field.placeholder"></el-input> </template> <template v-else-if="field.type === 'select'"> <el-select v-model="formData[field.name]" placeholder="请选择"> <el-option v-for="option in field.options" :key="option.value" :label="option.label" :value="option.value"></el-option> </el-select> </template> <!-- 其他表单项类型 --> </el-form-item> </el-form> <el-button type="primary" native-type="submit">提交</el-button> </form> </template> <script> import { ref } from 'vue' import { ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElButton } from 'element-plus' export default { components: { ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElButton }, setup() { const formData = ref({}) const formFields = [ { type: 'text', name: 'username', label: '用户名', placeholder: '请输入用户名' }, { type: 'select', name: 'gender', label: '性别', options: [ { value: 'male', label: '男' }, { value: 'female', label: '女' } ]}, // 其他表单项数据 ] const formRules = ref({}) formFields.forEach(field => { formData.value[field.name] = '' formRules.value[field.name] = { required: true, message: '请输入' + field.label, trigger: 'blur' } }) const submitForm = () => { // 表单验证 const form = this.$refs.form form.validate(valid => { if (valid) { // 获取表单数据 const data = JSON.stringify(formData.value) // 处理表单数据 // ... } else { return false } }) } return { formData, formFields, formRules, submitForm } } } </script> ``` 在上面的代码中,我们使用了Element Plus的表单组件来生成表单项。在Vue3中,我们使用了`ref`来获取表单实例,以便进行表单验证。在`setup`函数中初始化了表单数据和表单验证规则,并定义了表单提交的方法。在表单提交时,我们先进行表单验证,通过后再获取表单数据并进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值