vue3+elemen-plus的表单验证(不使用官方的ts)

<el-form
        ref="ruleFormRef"
        :model="ruleForm"
        status-icon
        :rules="rules"
        label-width="120px"
        class="demo-ruleForm"
      >
        <el-form-item label="账号:" prop="username">
          <el-input
            v-model="ruleForm.username"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item label="密码:" prop="password">
          <el-input
            v-model="ruleForm.password"
            type="password"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="submitForm(ruleFormRef)"
            >登入</el-button
          >
        </el-form-item>
      </el-form>
<script setup>
import { ref, reactive } from "vue";

const ruleFormRef = ref(null)
const ruleForm = reactive({
  username: "",
  password: "",
});

const rules = reactive({
   username: [
      { required: 'true', message: '账户不能为空', trigger: 'blur' }
    ],
    password: [
      { required: 'true', message: '密码不能为空', trigger: 'blur' }
    ]
});

const submitForm = async () => {
  if (!ruleFormRef) return;
  ruleFormRef.value.validate((valid) => {
    if (valid) {
      console.log("submit!");
    } else {
      return false;
    }
  });
};

</script>

效果:

参考:Form 表单 | Element Plus

### 使用 Vue 3Element Plus 和 TypeScript 实现 CMS 功能 #### 创建项目结构 为了构建基于 Vue 3 的 CMS 应用程序,首先需要初始化一个新的 Vue 项目并安装必要的依赖项。通过 `vue-cli` 或者 Vite 可以快速搭建环境。 ```bash npm init vite@latest my-cms-app --template vue-ts cd my-cms-app npm install ``` 接着安装 Element Plus 组件库: ```bash npm i element-plus ``` #### 配置全局样式和按需加载组件 为了让应用更高效,在 main.ts 中配置 Element Plus 并设置主题颜色等参数[^1]。 ```typescript // src/main.ts import { createApp } from &#39;vue&#39; import App from &#39;./App.vue&#39; import ElementPlus from &#39;element-plus&#39; import &#39;element-plus/dist/index.css&#39; const app = createApp(App) app.use(ElementPlus) app.mount(&#39;#app&#39;) ``` 对于大型应用程序来说,推荐采用按需引入的方式减少打包体积。可以借助 unplugin-vue-components 插件来自动导入所需组件。 #### 设计数据模型和服务层 定义好 API 接口之后就可以创建服务类用于处理 HTTP 请求。这里假设有一个 RESTful 后端提供文章列表接口 `/api/articles`。 ```typescript // src/services/articleService.ts import axios from &#39;axios&#39;; export default class ArticleService { static async fetchArticles() { const response = await axios.get(&#39;/api/articles&#39;); return response.data; } } ``` #### 构建页面布局与路由管理 使用 Element Plus 提供的各种容器组件如 el-container 来设计响应式的页面框架;利用 vue-router 进行单页应用中的多视图切换逻辑控制。 ```javascript // router/index.ts import { createRouter, createWebHistory } from &#39;vue-router&#39;; import HomeView from &#39;../views/HomeView.vue&#39;; import EditArticleView from &#39;../views/EditArticleView.vue&#39;; const routes = [ { path: &#39;/&#39;, name: &#39;home&#39;, component: HomeView, }, { path: &#39;/edit/:id?&#39;, name: &#39;edit-article&#39;, component: EditArticleView, }, ]; const router = createRouter({ history: createWebHistory(), routes, }); export default router; ``` #### 开发表单编辑器和其他交互模块 针对内容创作需求开发富文本编辑器插件或其他自定义输入控件。Element Plus 自带了一些基础的 form 表单项支持双向绑定验证等功能特性。 ```html <!-- views/EditArticleView.vue --> <template> <el-form :model="form"> <el-form-item label="Title"> <el-input v-model="form.title"></el-input> </el-form-item> <!-- 更多功能可自行扩展... --> <el-button type="primary" @click="submitForm">Submit</el-button> </el-form> </template> <script lang="ts"> import { defineComponent, reactive } from &#39;vue&#39;; import ArticleService from &#39;@/services/articleService&#39;; export default defineComponent({ setup() { const form = reactive({ title: &#39;&#39; }); function submitForm() { console.log(&#39;Submitting:&#39;, form); // 调用 service 方法提交数据... } return { form, submitForm }; }, }); </script> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值