基于Vue+Element的表單驗證

小編在進行b2b項目時候用的框架是Vue+Element,在b2b中各種表單各種驗證张遭,原來js都是通過正則彈框的形式去提示用戶,在Element中封裝了很好用的表單驗證提示,小編將它進一步封裝:?

首先在staic文件夾下簡歷了formValidator.js文件螃宙,內容如下:?

// 手機號驗證
var phone = (rule, value, callback) => {
  let regFormat = /^[1][3578][0-9]{9}$/; //正確手機號
  if (!value) {
    return callback(new Error('不能為空'));
  }
    if (!(regFormat.test(value))) {
      callback(new Error('請輸入正確手機號'));
    } else {
      if (value < 18) {
        callback(new Error('必須大于18歲'));
      }else {
        callback();
      }
    }
};
//數字驗證
var number = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('不能為空'));
  }
    if (!Number.isInteger(value)) {
      callback(new Error('請輸入數字值'));
    } else {
      if (value < 18) {
        callback(new Error('必須大于18歲'));
      }else if(value >55){
        callback(new Error('必須小于55歲'));
      } else {
        callback();
      }
    }
};
//text不能為空
var text = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('不能為空'));
  }else{
    callback();
  }
};
//desc不能為空
var desc = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('不能為空'));
  }else{
    callback();
  }
};
//郵箱
var email = (rule, value, callback) => {
  let mal = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (!value) {
    return callback(new Error('不能為空'));
  }
  if(!(mal.test(value))) {
    callback(new Error('請輸入正確郵箱'));
  }else{
    callback();
  }
};
//開始時間
var startTime = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('請選擇開始日期'));
  }else{
    callback();
  }
};
//開始時間
var endTime = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('請選擇結束日期'));
  }else{
    callback();
  }
};
//時間
var time = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('請選擇日期'));
  }else{
    callback();
  }
};
//多選框
var checkbox = (rule, value, callback) => {
  if (value.length<1) {
    return callback(new Error('請選擇一個'));
  }else{
    callback();
  }
};
//單選框
var radio = (rule, value, callback) => {
  if (value.length<1) {
    return callback(new Error('請選擇一個'));
  }else{
    callback();
  }
};
//下拉框
var select = (rule, value, callback) => {
  if (value.length<1) {
    return callback(new Error('請選擇一個'));
  }else{
    callback();
  }
};
image.png
image.png

image.png

在調用的時候?例如:郵箱驗證

 <el-form :model="ruleForm"  status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
      <el-form-item prop="email" label="郵箱" >
        <el-input  v-model="ruleForm.email"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </el-form-item>
    </el-form>

email: [{
validator: email//email的方法
}]

 data() {
      return {
        ruleForm: {
          email: ''
        },
        rules: {
          email: [{
            validator: email
          }]
        }
      }
    },
  submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
手機號驗證
 <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
      <el-form-item label="手機號" prop="phone" >
        <el-input v-model.number="ruleForm.phone"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </el-form-item>
    </el-form>

phone: [{
validator: phone
}]

 data() {
      return {
        ruleForm: {
          phone: ''
        },
        rules: {
          phone: [{
            validator: phone
          }]
        }
      }
    },
submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }

以此類推
文章摘自:https://github.com/jf-wang/Form-Validator

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市差牛,隨后出現的幾起案子音羞,更是在濱河造成了極大的恐慌,老刑警劉巖十办,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秀撇,死亡現場離奇詭異,居然都是意外死亡向族,警方通過查閱死者的電腦和手機呵燕,發(fā)現死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來件相,“玉大人再扭,你說我怎么就攤上這事∫勾#” “怎么了泛范?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長紊撕。 經常有香客問我罢荡,道長,這世上最難降的妖魔是什么对扶? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任区赵,我火速辦了婚禮,結果婚禮上辩稽,老公的妹妹穿的比我還像新娘惧笛。我一直安慰自己,他們只是感情好逞泄,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布患整。 她就那樣靜靜地躺著,像睡著了一般喷众。 火紅的嫁衣襯著肌膚如雪各谚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天到千,我揣著相機與錄音昌渤,去河邊找鬼。 笑死憔四,一個胖子當著我的面吹牛膀息,可吹牛的內容都是我干的般眉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼潜支,長吁一口氣:“原來是場噩夢啊……” “哼甸赃!你這毒婦竟也來了?” 一聲冷哼從身側響起冗酿,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤埠对,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后裁替,有當地人在樹林里發(fā)現了一具尸體项玛,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年弱判,在試婚紗的時候發(fā)現自己被綠了襟沮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡裕循,死狀恐怖臣嚣,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情剥哑,我是刑警寧澤硅则,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站株婴,受9級特大地震影響怎虫,放射性物質發(fā)生泄漏。R本人自食惡果不足惜困介,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一大审、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧座哩,春花似錦徒扶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至屿良,卻和暖如春圈澈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尘惧。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工康栈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓啥么,卻偏偏與公主長得像登舞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悬荣,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容