当前位置:Gxlcms > JavaScript > 详解vue如何使用rules对表单字段进行校验

详解vue如何使用rules对表单字段进行校验

时间:2021-07-01 10:21:17 帮助过:3人阅读

1、在代码中,添加属性::rule

  1. <Form ref="loginForm" :model="form" :rules="rules" @keydown.enter.native="handleSubmit" class="form-con">
  2. <FormItem prop="phone">
  3. <Input v-model="form.phone" prefix="md-person" placeholder="请输入您的手机号" size="large" class="login-form-input" :maxlength="11"></Input>
  4. </FormItem>
  5. <FormItem prop="password">
  6. <Input type="password" v-model="form.password" prefix="md-lock" placeholder="请输入您的密码" size="large" class="login-form-input" :maxlength="100"></Input>
  7. </FormItem>
  8. <FormItem prop="code">
  9. <Input v-model="form.code" placeholder="请输入验证码" prefix="ios-barcode" size="large" class="login-form-input" :maxlength="4"></Input>
  10. <img @click="refLoginImg" :src="loginImgSrc" class="login-img"/>
  11. </FormItem>
  12. <FormItem>
  13. <Button @click="handleSubmit" :loading="submitLoading" type="info" long size="large" class="login-btn" icon="md-log-in">
  14. <span v-if="!submitLoading">立即登录</span>
  15. <span v-else>正在登录,请稍候...</span>
  16. </Button>
  17. </FormItem>
  18. </Form>

2.新建一个文件(validate.js)定义验证规则

  1. /** 这个文件只允许放表单验证方法 **/
  2. //验证手机号
  3. export function isPhone(rule, value, callback) {
  4. if (!value) {
  5. return callback(new Error('输入不可以为空'));
  6. }
  7. var pattern = /^1[34578]\d{9}$/
  8. if(pattern.test(value)){
  9. return callback()
  10. }
  11. return callback(new Error('输入的手机号错误'))
  12. }

3、在页面(xx.vue)中引入验证规则定义的文件,并在export default中定义rule规则,使用语法:{validator:验证方法,trigger:验证触发} validator

  1. rules: {
  2. phone: [
  3. { required: true, message: '手机号不能为空', trigger: 'blur' },
  4. { type: 'string', min: 11, message: '手机号不允许小于11位', trigger: 'blur' },
  5. { validator: isPhone, trigger: 'blur' },
  6. ],
  7. password: [
  8. { required: true, message: '密码不能为空', trigger: 'blur' },
  9. { type: 'string', min: 6, message: '密码不允许小于6位', trigger: 'blur' },
  10. ],
  11. code: [
  12. { required: true, message: '验证码不能为空', trigger: 'blur' },
  13. { type: 'string', min: 4, message: '验证码必须是4位', trigger: 'blur' },
  14. ],
  15. },

以下是validator.js文件的部分验证方法

  1. /* 是否是公司邮箱*/
  2. export function isWscnEmail(str) {
  3. const reg = /^[a-z0-9](?:[-_.+]?[a-z0-9]+)*@wallstreetcn\.com$/i;
  4. return reg.test(str.trim());
  5. }
  6. /* 合法uri*/
  7. export function validateURL(textval) {
  8. const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
  9. return urlregex.test(textval);
  10. }
  11. // 验证是否整数
  12. export function isInteger(rule, value, callback) {
  13. if (!value) {
  14. return callback(new Error('输入不可以为空'));
  15. }
  16. setTimeout(() => {
  17. if (!Number(value)) {
  18. callback(new Error('请输入正整数'));
  19. } else {
  20. const re = /^[0-9]*[1-9][0-9]*$/;
  21. const rsCheck = re.test(value);
  22. if (!rsCheck) {
  23. callback(new Error('请输入正整数'));
  24. } else {
  25. callback();
  26. }
  27. }
  28. }, 1000);
  29. }
  30. // 验证是否是[0-1]的小数
  31. export function isDecimal(rule, value, callback) {
  32. if (!value) {
  33. return callback(new Error('输入不可以为空'));
  34. }
  35. setTimeout(() => {
  36. if (!Number(value)) {
  37. callback(new Error('请输入数字'));
  38. } else {
  39. if (value < 0 || value > 1) {
  40. callback(new Error('请输入[0,1]之间的数字'));
  41. } else {
  42. callback();
  43. }
  44. }
  45. }, 1000);
  46. }
  47. // 验证端口是否在[0,65535]之间
  48. export function isPort(rule, value, callback) {
  49. if (!value) {
  50. return callback(new Error('输入不可以为空'));
  51. }
  52. setTimeout(() => {
  53. if (value == '' || typeof(value) == undefined) {
  54. callback(new Error('请输入端口值'));
  55. } else {
  56. const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;
  57. const rsCheck = re.test(value);
  58. if (!rsCheck) {
  59. callback(new Error('请输入在[0-65535]之间的端口值'));
  60. } else {
  61. callback();
  62. }
  63. }
  64. }, 1000);
  65. }
  66. /* 小写字母*/
  67. export function validateLowerCase(str) {
  68. const reg = /^[a-z]+$/;
  69. return reg.test(str);
  70. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行