简单的效验

 Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名
  /*  ruleForm :表单绑定的数据
   rules : 表单效验规则
   ref="ruleForm" : 表示el-form 这个Dom 节点
 */
    
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" >
<el-form-item label="活动名称" prop="name"> //el-form-item 上面必须要设置 prop 属性prop对应绑定的model值
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
</el-form>
<script>
export default {
data() {
return {
ruleForm: {
name: '',
},
rules: {
      //name 对应 prop 的值
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
]
}
};
},
methods: {
submitForm(formName) {
     //调用表单节点的效验方法
    this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
}
  
}
}
</script>

  然后是自定义效验

<template>
<el-dialog title="添加新团队" :visible.sync="showNewTeamDialog"> <el-form :rules="rules" ref="newTeam" :model="newTeam" label-width="100px">
<el-form-item label="团队名称" id="teamName" prop="teamName" ref="teamName">
<el-input v-model="newTeam.teamName" placeholder="团队名称" :style="{'width':inputWidth}"></el-input>
</el-form-item> <div class="postButtons">
<el-form-item>
<el-button v-if="drugSearch_btn_edit" type="primary" @click="onSubmit('newTeam')" style="width:100px">确定</el-button>
<el-button @click="showNewTeamDialog = false" style="width:100px">取消</el-button>
</el-form-item>
</div>
</el-form>
</el-dialog>
</template> <script>

/*

import {
  verifyTeamName
} from 'api/doctorTeam/doctorTeamApi'

  api/doctorTeam/doctorTeamApi 里面的方法如下

export function verifyTeamName(params) {
    return fetch({
    url: '/api/nphc/doctorTeam/verifyTeamName',
    method: 'post',
    params: params
  });
}

*/

export default {

      data() {
//在return 上面写自定义效验方法
const checkTeamName = (rule, value, callback) => {
if (!value) {
            //callback 是提示的信息
return callback(new Error('团队名不能为空'));
} else {
            //调用封装了的异步效验方法,
verifyTeamName(this.newTeam).then(response => {
if (response.result.errcode != '0') {
console.log("效验失败");
} else {
if (response.body[0] === 0) {
console.log(response.body[0]);
callback();
} else {
callback("已存在该队名");
}
}
});
}
};
return {
rules: {
teamName: [{
validator: checkTeamName,
trigger: 'blur'
}],
}, newTeam: {
teamName: undefined
}, }
},
methods: { // 新增团队提交
onSubmit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
addTeam(this.newTeam).then(response => {
if (response.result.errcode != '0') {
console.log("添加团队失败");
} else {
this.newTeam.captainId = undefined;
this.newTeam.hospitalId = undefined;
this.$message('添加团队成功');
this.getList();
}
});
this.showNewTeamDialog = false;
} else {
console.log('error submit!!');
return false;
}
});
},
doAdd() {           //重置表单清除表单数据和效验
this.$nextTick(function() {
if (this.$refs.newTeam !== undefined)
this.$refs.newTeam.resetFields();
})
this.showNewTeamDialog = true;
}, }
}
</script>

Vue+Element-Ui 异步表单效验的更多相关文章

  1. vue + element ui 阻止表单输入框回车刷新页面

    问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...

  2. vue+element ui 重置表单

    <el-dialog :title="addForm.title" :visible.sync="dialogFormVisible" width=&qu ...

  3. Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)

    Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成) 动态表单生成 ElementUI官网引导 Element表单生成 Element动态增减表单,在线代码 关键配置 templa ...

  4. element ui form表单清空规则

    公司项目重构,经过商定使用element ui.在重构项目的时候发现一下element ui上很蛋疼的东西. 例如,这个form表单就是一个.趁着在高铁上没事,把想写的东西写一下. 先说一下eleme ...

  5. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  6. element ui FORM表单

    form表单 Form-Item Slot [label] 旧版语法 <el-form-item label="活动名称" prop="name"> ...

  7. vue+element 正则表达式进行表单验证

    <template> <el-form :model="form" label-width="115px" ref="form&qu ...

  8. vue+element之多表单验证

    方法一:利用promise var p1=new Promise(function(resolve, reject) { this.$refs[form1].validate((valid) => ...

  9. 基于 vue+element ui 的cdn网站(多页面,都是各种demo)

    前言:这个网站持续更新中...,有网上预览,github上也有源码,喜欢记得star哦,欢迎留言讨论. 网站地址:我的个人vue+element ui demo网站 github地址:yuleGH g ...

随机推荐

  1. 【rust】rust安装,运行第一个Rust 程序 (1)

    安装 Rust 在 Unix 类系统如 Linux 和 macOS 上,打开终端并输入: curl https://sh.rustup.rs -sSf | sh 回车后安装过程出现如下显示: info ...

  2. Java——常用类(File)

    [File]    <1>java.io.File类代表系统文件名(路径和文件名).         ----注意:这里代表的只是文件名,而不是物理上的文件(硬盘上的数据),通过该类无法读 ...

  3. 给字体和元素加阴影text-shadow和box-shadow

    1.语法:  对象选择器 {text-shadow:X轴偏移量 Y轴偏移量 阴影模糊半径 阴影颜色} 注:text-shadow可以使用一个或多个投影,如果使用多个投影时必须需要用逗号“,”分开. 2 ...

  4. Qt Creator 启动失败 可能的解决办法

    用了一段时间Qt Creator莫名的打开失败   重装一遍,仍然不行: 网上搜到解决办法:删除 ~\AppData\Roaming\QtProject文件夹. linux下:~是/home/Your ...

  5. functional-page-navigator 组件

    functional-page-navigator 组件:是一个非常强大的组件,用于跳转插件的功能页 functional-page-navigator组件的属性: version:类型 字符串 跳转 ...

  6. skip a transaction in goldengate

    skip a transaction in goldengate [oracle@db ]$ ggsci Oracle GoldenGate Command Interpreter for Oracl ...

  7. pc显示,手机隐藏

    <div class="none"><img src="https://www.foresthouse.cn/bigpic.jpg"/> ...

  8. 禁止、允许MySQL root用户远程访问权限

    关闭MySQL root用户远程访问权限: use mysql; update user set host = "localhost" where user = "roo ...

  9. such as, for example, include和contain

    such as 后接动词,通常用动名词,有时也可用动词原形 for example 后接动词,用动名词 include vt. 包含,包括 后接动词,用动名词 英英: If one thing inc ...

  10. abstract 和 interface 抽象类和接口的区别

    初版:以后再整理. 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需 ...