elementUI From表单校验,整体校验和部分校验的使用方法

        我们在开发中,有势会接到一种关于表单验证的需求,在对整体表单验证的同时也希望对单个表单进行验证,虽然官网都有api,但是为了让大家更为直观,这里小杰为了更为直观的理解做了总结。

本次涉及到的核心点

validate(callback)参数为回调函数

validateField(arr,callback)第一个参数为数组,第二个参数为回调函数

--额外两个--

resetFields()表单重置,表单所有字段值重置为初始值,移除校验结果

clearValidate(arr/string)移除表单项的校验结果。他的参数是字符串或者数组,想移除那个就把prop值作为参数,多个就以数组形式

---------------------------------接下来我们进入正题----------------------------------

from表单

------表单随便写的不要在意格式,此次的目的是为了理解表单校验-----

<el-form
  status-icon
  :model='ruleFrom'
  :rules="rules"
   ref="ruleForm"
   style="width: 345px"
   class="demo-ruleForm">
  <el-form-item prop="user"  label="账户 :"> 
        <el-input
          placeholder="请输入账户"
          size="small"
          style="width: 200px"
          v-model="ruleFrom.user"
        ></el-input>  
        <el-button size="small" type="primary" @click="dd">校验</el-button>            
      </el-form-item>            
      <el-form-item prop="pass" label="密码 :">               
        <el-input
          placeholder="输入数字"
          size="small"
          style="width: 250px"
          v-model="ruleFrom.pass"
        ></el-input>                 
      </el-form-item>               
      <el-form-item>
        <el-button class="btn">取消</el-button>    
        <el-button class="btn" @click="submitForm">提交</el-button>            
          </el-form-item>  
</from>

一. 首先是创建校验规则

1. 表单验证

//trigger: "blur" 输入框失焦时触发校验
//required: true 输入框为空校验提示
rules: {
        user: [{ required: true, message: '请输入账户', trigger: "blur" }],
        pass: [{required: true, message: '请输入密码' ,trigger: "blur" },],
      },

2. 自定义校验规则

var validateuser = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("账户为空"));
      } else if (!/^\d{4}$/.test(value)){
          callback(new Error("请输入正确的账户"));
      }
        callback();  
    };
var validatePass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("密码为空"));
      } else  if (!/\d/.test(value)) {
          callback(new Error("请输入正确密码"));
      }
        callback();
    };
 return {
    ruleFrom:{
        user: "",
        pass: "",
      },
 rules: {
    user: [{ validator: validateuser,trigger: "blur" }],
    pass: [{ validator: validatePass,trigger: "blur" },],
 },

注:这些操作都是在data()下进行的 

二、校验

1. 点击提交时,整体表单校验,validate方法 

//value 返回的是布尔值 true和false  
submitForm() {
  this.$refs.ruleForm.validate((value) => {
    console.log(value)
    });
  },

--------------校验效果如图所示-------------

①、表单为空时

②、表单不符合规则

③、表单部分不符合规则

 ④、表单校验成功

 2. 点击校验时,对部分表单校验,validateField方法,这里拿账户来举例

//validateField第一个参数是数组,里面就是我们要部分校验的表单
//validateField第二个参数是数组,valid返回的是表单验证错误时返回的提示语,vv返回的是个对象
dd() {
      this.$refs.ruleForm.validateField(["user"], (valid,vv) => {
        if(!valid){
          console.log("校验成功")
        }
      });
    },

----------校验效果如图所示------------

①、账户为空时 

 ②、账户不符合规则 

 ③、账户验证成功  valid返回的是空串,vv返回的是null

         最后,如果想在添加提交的时候也校验一下部分表单是否通过,可以加个开关然后在validate中多加一个开关判断就ok了,希望可以帮助到大家

### 修改ElementUI表单校验提示信息 在ElementUI中,可以通过自定义`rules`对象来修改表单字段的校验规则及其对应的错误提示信息。具体来说,在创建表单实例时,通过`rules`属性指定各个字段的校验逻辑和相应的提示文案。 对于每个需要校验的字段,可以在其关联的`el-form-item`组件中的`prop`属性绑定到`rules`里的相应键值下,并为其设定具体的校验条件与消息[^1]。 下面是一个简单的例子展示了如何实现这一点: ```html <template> <div id="app"> <!-- 定义一个带有校验功能的表单项 --> <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form-item label="设备名称" prop="name"> <el-input v-model="ruleForm.name"></el-input> </el-form-item> <!-- 提交按钮 --> <el-form-item> <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button> </el-form-item> </el-form> </div> </template> <script> export default { data() { var validateName = (rule, value, callback) => { if (!value) { return callback(new Error('请输入有效的设备名称')); } else { callback(); } }; return { ruleForm: { name: '' }, rules: { name: [ { validator: validateName, trigger: 'blur' } ] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('提交成功!'); } else { console.log('验证失败'); return false; } }); } } }; </script> ``` 在这个案例里,针对名为`name`的输入框设置了特定的校验函数`validateName`,该函数会在失去焦点(`trigger:'blur'`)时触发。如果用户未提供任何输入,则会显示一条定制化的错误信息:“请输入有效的设备名称”。 为了调整默认的校验提示位置,还可以考虑给整个`el-form`或单独的`el-form-item`添加`label-width`样式属性以控制标签宽度,从而间接影响提示信息的位置[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_JSJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值