首页 > 其他分享 >vue给元素添加校验rules

vue给元素添加校验rules

时间:2024-05-14 17:12:54浏览次数:24  
标签:el vue const form 验证 rules 校验 blur

1.使用validator添加校验规则:

在Elemengplus(Vue 3版本的Element Plus)框架中,给el-dialog中的input框添加日期格式验证,可以使用el-formel-form-item组件来配合实现,并通过el-input组件的v-model绑定数据,结合el-form的验证规则rules实现。

以下是一个简单的例子,演示如何给日期输入框添加日期格式的验证:

<template>
  <el-dialog title="日期验证对话框" v-model="dialogVisible">
    <el-form :model="form" :rules="rules" ref="dateForm">
      <el-form-item label="日期" prop="date">
        <el-input v-model="form.date" placeholder="请输入日期"></el-input>
      </el-form-item>
    </el-form>
    <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button type="primary" @click="submitForm">确定</el-button>
      </span>
    </template>
  </el-dialog>
</template>
 
<script setup>
import { ref } from 'vue';
import { ElMessage } from 'element-plus';
 
const dialogVisible = ref(false);
const form = ref({
  date: ''
});
 
const validateDate = (rule, value, callback) => {
  // 这里可以添加具体的日期格式验证逻辑
  if (!value) {
    return callback(new Error('日期不能为空'));
  }
  // 假设我们要验证YYYY-MM-DD格式
  if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) {
    return callback(new Error('请输入正确的日期格式YYYY-MM-DD'));
  }
  callback();
};
 
const rules = {
  date: [
    { required: true, message: '请输入日期', trigger: 'blur' },
    { validator: validateDate, trigger: 'blur' }
  ]
};
 
const submitForm = () => {
  form.value.date = form.value.date.trim(); // 去除输入字符串首尾的空格
  const dateForm = ref();
  dateForm.value.validate((valid) => {
    if (valid) {
      ElMessage.success('提交成功');
    } else {
      ElMessage.error('表单验证失败');
      return false;
    }
  });
};
</script>


在这个例子中,我们定义了一个validateDate函数来进行日期格式的验证,它使用正则表达式来检查输入的日期格式是否为YYYY-MM-DD。在rules对象中,我们添加了一个针对date字段的验证规则,并使用validator属性指定了自定义验证函数。在submitForm方法中,我们通过el-formvalidate方法来触发验证,并根据验证结果进行相应的操作。

 

2.使用pattern添加验证规则

  <el-dialog v-model="dialogFormVisible" title="Add dialog" width="30%" center>
        <!-- 表单-->
        <el-form ref="userForm" :model="formData" :rules="rules" class="demo-form-inline">
            <el-form-item label="Input infor Name" prop="infoName">
                <el-input v-model="formData.infoName" placeholder="input info name:[yyyy.MM.dd] xxx"/>
            </el-form-item>

        </el-form>

        <template #footer>
              <span class="dialog-footer">
                <el-button @click="dialogFormVisible = false">Cancel</el-button>
                <el-button type="primary" @click="submitForm(userForm)"> Create </el-button>
              </span>
        </template>
    </el-dialog>




setup() {
            const data = reactive({
                keyWord: {
                    infoName:""
                },
                searchParams: {
                    query:"",
                    pagesize: 20,
                    pagenum: 1
                },
                infoList: [],
                dialogFormVisible: false, //默认create对话框是disable,
                editDialogFormVisible: false,//默认edit对话框是disable,
                formData: {
                    infoName: ""
                },
                rules: {
                    infoName: [
                        {
                            required: true, message: "plz input info name", trigger: ["blur", "change"]
                        },
                        {
                            // pattern:/^\[\d{4}.\d{2}.\d{2}$\]/,
                            pattern:/^\[\d{4}.\d{2}.\d{2}\]/,
                            messsage:"info name style should be: [yyyy.MM.dd] XXX",
                            trigger: ["blur", "change"]

                        },
                    ]
                },
                editFormData: {
                    infoName: ""
                },
                editRules: {
                    infoName: [{
                        required: true, message: "plz input infoname", trigger: ["blur", "change"]
                    }]
                },

            })
trigger: ["blur", "change"]
表示:失去聚焦时 ,值改变时

标签:el,vue,const,form,验证,rules,校验,blur
From: https://www.cnblogs.com/pingguomang/p/18191730

相关文章

  • Vue2入门之超详细教程十七-常用内置命令集合
    Vue2入门之超详细教程十四-常用内置指令集合1、简介常用内置指令集合v-bind:单向绑定解析表达式,可简写为:xxxv-model:双向数据绑定v-for:遍历数组/对象/字符串v-on:绑定时间监听,可简写为@v-if:条件渲染(动态控制节点是否存在)v-else:条件渲染(动态控制节点是否存在)v-show:条件渲染......
  • VUE-局部使用
    目录VUE-局部使用快速入门常用指令v-forv-bindv-if&v-showv-onv-modelvue生命周期AxiosVUE-局部使用Vue是一款用于构建用户界面的渐进式的JavaScript框架。(官方:https://cn.vuejs.org/)快速入门准备准备html页面,并引入Vue模块(官方提供)创建Vue程序的应用实例准备元素(......
  • 探索Vue.js:从基础到进阶
    前言随着现代Web应用程序的日益复杂,前端开发框架也在不断演进,为开发者提供更强大、更高效的工具和技术。在这些框架中,Vue.js以其简洁、灵活和响应式的特点而备受青睐。本文将带领读者深入探索Vue.js,从基础概念到进阶技巧,让你全面了解这个令人惊叹的前端开发框架。Vue.js基......
  • springboot+vue创建_1
    Springboot+vue创建一、创建后台项目1.在文件夹创建一个空文件夹,在idea中打开它2.可以先修改一下file-->settings-->Maven里面的一下东西,改成自己的maven地址(以免后面pom.xml文件有问题)3.在sb_vue_mo中右键-->new-->Module,选择SpringInitializer之后自行修改我是选择了ja......
  • vue+element-ui在表格中计算两数差值并让差值>20的字体显示为红色
    <el-table-columnprop="differential"label="差量"class-name="small-paddingfixed-width"><templateslot-scope="scope"><span:c......
  • Vue学习知识汇总
    官网:https://cn.vuejs.org/前置知识:完整的学习vue:html+css、JavaScript、css3、HTML5、第三方库、网络通信、ES6+、webpack、模块化、包管理器、css预编译器体验vue功能:html+css、JavaScriptVue拥有以下特点:渐进式组件化响应式Vue的应用场景:前台的部分页面......
  • vue3+ts+elementPlus项目搭建
    1.cmd+R  查看是否安装node环境和vue,node-v  出现版本号如果没有,去下载安装,地址: Node.js—DownloadNode.js®(nodejs.org)vue-V   出现版本号如果没有, 输入命令行,全局安装或升级脚手架npminstall-g@vue/cli2.创建vue项目  (项目名......
  • Windows+Pycharm+Flask+Vue+Element-Plus 前后端分离实现分写查询功能
    准备工作安装nodejshttps://nodejs.cn/download/验证是否安装成功安装Python不赘述,3.7+Pycharm创建Flask项目D:\pythonProject\myvueWindowsPowerShell进入到CMD指令界面,cdD:\pythonProject\myvue进入到myvue目录,创建vue项目文件client,然后cd到client目录,安装vue......
  • VUE3.0 中如何使用SVG图标
    1.文件下新建SvgIcon文件夹以及子文件index.js,index.vue,svg文件夹(用于存放svg图片) 2.编写index.vue组件<template><svg:class="svgClass"aria-hidden="true"><use:xlink:href="iconName"/></svg></template><......
  • Java开发微服务SpringCloudAlibaba+Nginx+Vue+Mysql+RabbitMQ
    项目介绍随着互联网技术的飞速发展和移动设备的普及,自媒体平台已经成为人们获取信息、传播观点、实现自我价值的重要途径。自媒体平台的设计与实现,不仅需要考虑如何提供便捷的内容发布、编辑和管理功能,还需要考虑如何构建健康的内容生态,保证信息的真实性和可靠性,防止虚假信息的传......