当前位置:   article > 正文

vue中iview组件实现表单数据的动态校验_uview动态表单校验

uview动态表单校验

1.实现效果

2.实现原理

  • iview组件库Form表单, ref=“formValidate”,:model=“formInline”,:rules=“ruleValidate”。
  • 选择审核结果的时候动态的设置备注的规则,当为通过为非必填,反之为必填。
  • 为备注项设置相应的动态rule:
  • :rules="formInline.status == '2'? ruleValidate.remark: [{ required: false }]"
    

    3.实现代码

    1. <template>
    2. <div class="content">
    3. <Card>
    4. <p slot="title">表单动态校验</p>
    5. <Form
    6. :label-width="100"
    7. ref="formValidate"
    8. :model="formInline"
    9. :rules="ruleValidate"
    10. >
    11. <FormItem label="审核结果:" prop="status">
    12. <Select
    13. v-model="formInline.status"
    14. placeholder="请选择审核结果"
    15. >
    16. <Option value="1">审核通过</Option>
    17. <Option value="2">审核驳回</Option>
    18. </Select>
    19. </FormItem>
    20. <FormItem
    21. label="备注:"
    22. prop="remark"
    23. :rules="
    24. formInline.status == '2'
    25. ? ruleValidate.remark
    26. : [{ required: false }]
    27. "
    28. >
    29. <Input v-model="formInline.remark" type="textarea"></Input>
    30. </FormItem>
    31. <div style="text-align: right; padding: 20px 0">
    32. <Button size="large" type="default" @click="cancelAction" class="mr10"
    33. >取消</Button
    34. >
    35. <Button size="large" type="primary" @click="addAction">确认</Button>
    36. </div>
    37. </Form>
    38. </Card>
    39. </div>
    40. </template>
    1. <script>
    2. export default {
    3. data() {
    4. return {
    5. formInline: {
    6. remark: "",
    7. status: "",
    8. },
    9. ruleValidate: {
    10. status: [
    11. { required: true, message: "审核结果不能为空", trigger: "change" },
    12. ],
    13. remark: [
    14. { required: true, message: "请填写不通过原因", trigger: "blur" },
    15. ],
    16. },
    17. };
    18. },
    19. methods: {
    20. addAction() {
    21. let data = { ...this.formInline };
    22. console.log(data);
    23. this.$refs.formValidate.validate((valid) => {
    24. if (valid) {
    25. this.$Message.success("操作成功");
    26. this.cancelAction();
    27. }
    28. });
    29. },
    30. cancelAction() {
    31. Object.keys(this.formInline).forEach((key) => {
    32. this.formInline[key] = "";
    33. });
    34. this.$refs["formValidate"].resetFields();
    35. },
    36. },
    37. };
    38. </script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/438193
推荐阅读
  

闽ICP备14008679号