1. 程式人生 > >vue如何使用rules對錶單欄位進行校驗

vue如何使用rules對錶單欄位進行校驗

基於element-ui

1、在程式碼中,新增屬性::rule

<el-form :model="form" :rules="rules" ref="form" label-width="150px"></el-form>
並且,在<el-form-item>中新增prop屬性,對應rules中的規則

2、新開一個資料夾(validate.js)定義驗證規則

3、在頁面(index.vue)中引入驗證規則定義的檔案,並在export default中定義rule規則,使用語法:{validator:驗證方法,trigger:驗證觸發}

  

3、以下是validator.js檔案的部分驗證方法

/* 是否是公司郵箱*/
export function isWscnEmail(str) {
  const reg = /^[a-z0-9](?:[-_.+]?[a-z0-9]+)*@wallstreetcn\.com$/i;
  return reg.test(str.trim());
}

/* 合法uri*/
export function validateURL(textval) {
  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.,?'\\+&%$#=~_-]+))*$/;
  return urlregex.test(textval);
}

// 驗證是否整數
export function isInteger(rule, value, callback) {
  if (!value) {
    return callback(new Error('輸入不可以為空'));
  }
  setTimeout(() => {
    if (!Number(value)) {
      callback(new Error('請輸入正整數'));
    } else {
      const re = /^[0-9]*[1-9][0-9]*$/;
      const rsCheck = re.test(value);
      if (!rsCheck) {
        callback(new Error('請輸入正整數'));
      } else {
        callback();
      }
    }
  }, 1000);
}


// 驗證是否是[0-1]的小數
export function isDecimal(rule, value, callback) {
  if (!value) {
    return callback(new Error('輸入不可以為空'));
  }
  setTimeout(() => {
    if (!Number(value)) {
      callback(new Error('請輸入數字'));
    } else {
      if (value < 0 || value > 1) {
        callback(new Error('請輸入[0,1]之間的數字'));
      } else {
        callback();
      }
    }
  }, 1000);
}

// 驗證埠是否在[0,65535]之間
export function isPort(rule, value, callback) {
  if (!value) {
    return callback(new Error('輸入不可以為空'));
  }
  setTimeout(() => {
    if (value == '' || typeof(value) == undefined) {
      callback(new Error('請輸入埠值'));
    } else {
      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])$/;
      const rsCheck = re.test(value);
      if (!rsCheck) {
        callback(new Error('請輸入在[0-65535]之間的埠值'));
      } else {
        callback();
      }
    }
  }, 1000);
}

/* 小寫字母*/
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/;
  return reg.test(str);
}