Skip to content

Input 输入框

基础用法

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "用户名",
  },
  attrs: {
    placeholder: "请输入",
  }
}

禁用状态

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "用户名",
  },
  attrs: {
    placeholder: "请输入",
    disabled: true, 
  }
}

一键清空

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "用户名",
  },
  attrs: {
    placeholder: "请输入",
    clearable: true, 
  }
}

格式化

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "用户名",
  },
  attrs: {
    placeholder: "请输入",
    formatter: (value) => `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ","),
    parser: (value) => value.replace(/\$\s?|(,*)/g, ""),
  }
}

密码框

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "密码",
  },
  attrs: {
    placeholder: "请输入",
    type: "password", 
    'show-password': true,
  }
}

带图标的输入框

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "用户名",
  },
  attrs: {
    placeholder: "请输入",
    'suffix-icon': Calendar,
    //'prefix-icon': Search
  }
}

TIP

图标组件需要提前手动导入

import { Calendar, Search } from "@element-plus/icons-vue";

复合型输入框

ts

  {
    id: "",
    componentName: "Input",
    componentType: "form",
    formItemAttrs: {
      field: "input1",
      label: "",
    },
    attrs: {
      placeholder: "请输入",
    },
    slots: {
      prepend: {
        componentName: "span",
        text: "Http://",
      },
    },
  }
ts
  {
    id: "",
    componentName: "Input",
    componentType: "form",
    formItemAttrs: {
      field: "",
      label: "",
    },
    attrs: {
      placeholder: "请输入",
    },
    slots: {
      append: {
        componentName: "span",
        text: ".com",
      },
    },
  }

尺寸

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "用户名",
  },
  attrs: {
    placeholder: "请输入",
    size: 'large', // 'small'|'default'
  }
}

输入长度限制

ts
{
  id: "",
  componentName: "Input",
  componentType: "form",
  formItemAttrs: {
    field: "",
    label: "用户名",
  },
  attrs: {
    placeholder: "请输入",
    maxlength: '10',  
    "show-word-limit": true, 
  }
}
vue
<script lang="ts" setup>
import { ref } from "vue";
import FormCookRender from "form-cook-render";
import type { FormSchema } from "form-cook-render";
const formData = ref({});
const formSchema: FormSchema = {
  formAreaConfig: {
    attrs: {},
  },
  formContentConfigList: [
    {
      id: "input1",
      componentName: "Input",
      componentType: "form",
      formItemAttrs: {
        field: "username",
        label: "用户名",
        required: true,
      },
      attrs: {
        placeholder: "请输入用户名",
      },
    },
  ],
};
</script>

<template>
  <form-cook-render v-model="formData" v-model:form-schema="formSchema" />
</template>

Released under the MIT License.