餓了麼元件庫element-ui正則表示式驗證表單,後端驗證表單
vue+elementui 提高開發效率,以下為form表單驗證例子。包含自定義驗證等。
1. 以中國大陸手機號驗證為例
// 這是組價的程式碼
<el-form-item prop="mobile">
<el-input type="text" v-model="ruleForm.mobile" auto-complete="off" placeholder="請輸入手機號"></el-input>
</el-form-item>
// 這是rules的程式碼
mobile: [
{ validator: validateMobile, trigger: 'blur' },
{ required: true, message: '請輸入手機號', trigger: 'blur' },
{ pattern: /^1[34578]\d{9}$/, message: '目前只支援中國大陸的手機號碼' }
],
在element-ui的原始碼中搜索blur,你會很容易看到除了blur 還有focus、input,多個使用“,”分隔
2. 表單區域性提交後端驗證
在一些輸入專案較多的表單提交中,比如說註冊時填寫的使用者名稱,通常我們會對使用者名稱是否重複進行驗證,這是就需要呼叫服務來驗證,這種略顯複雜的驗證,就需要自定義驗證規則來實現。看下面的程式碼:
function validateMobile
(rule, value, callback) {
var MobileRegex = /^1[0-9]{10}$/;if (!MobileRegex.test(value)) {
callback(new Error('手機號碼格式不正確!'))
} else {
callback();
}
}
注意:自定義規則中每個執行流程中都必須附帶callback(),這樣才能明確通過驗證的情況下去掉輸入框上的loading。要顯示的錯誤提示則可以new Error(“xxxx”)即可。
3. 綜合來看
通常可以把所有規則都寫在自定義的規則中,即可實現較為複雜的驗證,實際上我們可以再validatePass裡面呼叫根例項下所有data methods...,一個很簡單的例子是實現兩次輸入的密碼是否相同的驗證,看下面的程式碼:
<div id="app">
<el-form :model="ruleForm" :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 label="手機號碼" prop="mobile">
<el-input v-model="ruleForm.mobile"></el-input>
</el-form-item>
<el-form-item label="活動區域" prop="region">
<el-select v-model="ruleForm.region" placeholder="請選擇活動區域">
<el-option label="區域一" value="shanghai"></el-option>
<el-option label="區域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="活動時間" required>
<el-col :span="11">
<el-form-item prop="date1">
<el-date-picker type="date" placeholder="選擇日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
</el-form-item>
</el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="11">
<el-form-item prop="date2">
<el-time-picker type="fixed-time" placeholder="選擇時間" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="即時配送" prop="delivery">
<el-switch v-model="ruleForm.delivery"></el-switch>
</el-form-item>
<el-form-item label="活動性質" prop="type">
<el-checkbox-group v-model="ruleForm.type">
<el-checkbox label="1" name="type">美食/餐廳線上活動</el-checkbox>
<el-checkbox label="2" name="type">地推活動</el-checkbox>
<el-checkbox label="3" name="type">線下主題活動</el-checkbox>
<el-checkbox label="4" name="type">單純品牌曝光</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊資源" prop="resource">
<el-radio-group v-model="ruleForm.resource">
<el-radio label="線上品牌商贊助"></el-radio>
<el-radio label="線下場地免費"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活動形式" prop="desc">
<el-input type="textarea" v-model="ruleForm.desc"></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>
</div>
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<script src="//unpkg.com/[email protected]/lib/index.js"></script>
<script type="text/javascript">
var app = new Vue({
el: "#app",
data: {
ruleForm: {
name: '',
mobile: "",
region: '',
date1: '',
date2: '',
delivery: false,
type: [],
resource: '',
desc: ''
},
rules: {
name: [
{ required: true, message: '請輸入活動名稱', trigger: 'blur' },
{ min: 3, max: 5, message: '長度在 3 到 5 個字元', trigger: 'blur' }
],
mobile: [
{ required: true, message: '請輸入手機號碼', trigger: 'blur' },
{
validator: function (rule, value, callback) {
var MobileRegex = /^1[0-9]{10}$/;
if (!MobileRegex.test(value)) {
callback(new Error('手機號碼格式不正確!'))
} else {
callback();
}
}, trigger: 'blur'
}
],
region: [
{ required: true, message: '請選擇活動區域', trigger: 'change' }
],
date1: [
{ type: 'date', required: true, message: '請選擇日期', trigger: 'change' }
],
date2: [
{ type: 'date', required: true, message: '請選擇時間', trigger: 'change' }
],
type: [
{ type: 'array', required: true, message: '請至少選擇一個活動性質', trigger: 'change' }
],
resource: [
{ required: true, message: '請選擇活動資源', trigger: 'change' }
],
desc: [
{ required: true, message: '請填寫活動形式', trigger: 'blur' }
]
}
}, methods: {
submitForm: function (formName) {
var Self = this;
this.$refs[formName].validate(function (valid) {
if (valid) {
alert(JSON.stringify(Self.ruleForm));
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm: function (formName) {
this.$refs[formName].resetFields();
}
}
});
</script>
就這麼簡單就可以實現非vuejs情況下是非囉嗦的驗證。而且樣式也不會很醜,當然了任然可以選擇自定義樣式。這個以後再記錄。
效果圖如下:
相關推薦
餓了麼元件庫element-ui正則表示式驗證表單,後端驗證表單
vue+elementui 提高開發效率,以下為form表單驗證例子。包含自定義驗證等。 1. 以中國大陸手機號驗證為例 // 這是組價的程式碼 <el-form-item prop="mobile"> <el-input type="text
仿餓了麼購物車效果(UI效果)
右列表標題懸停 左右列表滑動時聯動 新增購物車時動畫效果 右列表標題懸停&左右列表滑動時聯動 gradle新增依賴 compile 'se.emilsjolander:stickylisthead
VUE 餓了麼元件 1.4 table 屬性之一
<el-table :data="Data.list" style="width: 100%" tooltip-effect="light"> 程式碼中有二點介紹 :data 繫結的資料是 VUE 的 data.list 模板樣式風格是淺色系的。 tooltip
LeetCode題庫10:正則表示式匹配——JavaScript解答
題目描述: 給定一個字串 (s) 和一個字元模式 §。實現支援 ‘.’ 和 ‘*’ 的正則表示式匹配。 ‘.’ 匹配任意單個字元。 ‘*’ 匹配零個或多個前面的元素。 匹配應該覆蓋整個字串 (s) ,
Python 庫之SRE正則表示式 re 原始碼
# # Secret Labs' Regular Expression Engine # # re-compatible interface for the sre matching engine # # Copyright (c) 1998-2001 by Secret
正則表示式(模式器,匹配器)及java中的日期表示
正則表示式 正則表示式:用於匹配某些特定字串的一個規則。 沒有學會使用正則表示式的時候,我們遇到過這麼一個需求-----校驗使用者名稱是否合法? 具體要求如下: 1)使用者名稱長度必須在6到15之間 2)必須是字母數字組合 非正則具體實現如下 public clas
Python中正則表示式對單個字元,多個字元,匹配邊界等使用
Regular Expression,正則表示式,又稱正規表示式、正規表示法、正則表示式、規則表示式、常規表示法(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),是電腦科學的一個概
Java正則表示式過濾、替換,將一段文字中的英語單詞分別提取出,並統計詞頻,按詞頻排序。
最近在學習自然語言處理,在建立基礎標籤庫時,遇到一個需要提取語料中的英文單詞的工作,做好了現在來和大家分享下。 實現效果:讀取檔案內容,把其中的英文單詞提取出,並統計詞頻。提取時,原本不是連在一起的單詞可以分開獨立提取,例如:我的PPT和WORD,可以提取出PPT,WORD兩個單詞。 基本思
正則表示式的一些知識,留作後用
. 匹配任意字元,包括空字元 (星號) 表示前一個字元出現0次到任意次 .* 表示匹配任意長度的字串,可以是空字串 ? 表示前一個字元(或者說子表示式)出現0次到1次 如有這麼幾個檔案a.xls a.xlsx a.xlsm a.xlsmx a.xls.? 匹配a.xls a.xlsx a.xls
正則表示式中的模式,函式,及使用規則
一、正則表示式轉義 正則中的特殊符號: . * ? $ [] {} () | \ 正則表示式匹配特殊字元如果需要加 \ 表達轉義,比如: pattern
常用正則表示式(高亮,markdown)
校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(
python正則表示式 簡單的手機號碼格式的驗證
import re #手機號的匹配 phone = re.compile('^(13(7|8|9|6|5|4)|17(0|8|3|7)|18(2|3|6|7|9)|15(3|5|6|7|8|9))\d{8}$') num = input('請輸入手機號:') if re.match(phone
正則表示式真的很騷,可惜你不會寫!!!
本文旨在用最通俗的語言講述最枯燥的基本知識 文章提綱: 元字元 重複限定符 分組 轉義 條件或 區間 正則表示式在幾乎所有語言中都可以使用,無論是前端的JavaScript、還是後端的Java、c#。他們都提供相應的介面/函式支援正則表示式。
如何利用selenium+python獲取click()方法後 請求返回的結果 包含: javascript 陣列操作正則表示式匹配返回陣列,js兩個陣列取差集,再去重 by qiweb 2018
技術交流q and v信:908701702 ,熊貓燒香 qiweb2018 python程式碼思路【開啟網頁--定位元素--點選請求--獲取請求後伺服器返回的資訊】: # coding=utf-8 from selenium import webdriver from
正則表示式真的很騷,可惜你不會寫
本文旨在用最通俗的語言講述最枯燥的基本知識 文章提綱: 元字元 重複限定符 分組 轉義 條件或 區間 正則表示式在幾乎所有語言中都可以使用,無論是前端的JavaScript、還是後端的Java、c#。他們
JavaScript:正則表示式:基礎語法,
一、正則表示式基礎語法(Regular Expression) 1、正則表示式的建立方式:物件new RegExp(正則表示式) 或者 /正則表示式/ 虛擬碼 var reg = new RegExp(正則表示式); var reg = /正則表示式/; 2
常用的正則表示式整理【轉載,防丟失】
轉載文章,好資源,防丟失。原文連結: http://blog.cspojie.cn/2017/09/26/常用的正則表示式整理/ 一、校驗數字的表示式 1 數字: ^[0-9]$ 2 n位的數字: ^\d{n}$ 3 至少n位的數字: ^\d{n,}$ 4 m-n位的數字:^
python----使用re正則表示式刷選資料,去重,列表,取特定行資料(適用於web的html回包資料提取)
python—-使用re正則表示式刷選資料,去重,列表,取特定行資料(適用於web的html回包資料提取) 環境配置:對目標伺服器的日誌檔案進行刷選特定資料(192.168.4.27) /usr/
正則表示式——判斷字串組成,第一個必須是字母,後面可以是字母、數字、下劃線,總長度為5-20
//判斷字串是否是這樣組成的,第一個必須是字母,後面可以是字母、數字、下劃線,總長度為5-20 var c = /^[a-zA-Z]\w{4,19}$/; // /是轉義 ^ 是開頭 [
正則表示式--影象化形式,
最近看了一篇關於正則表示式的學習筆記,覺得講的非常好,更有圖形化的神器相助,想不學會都難,所以想轉給大家看看。 話說不是開發為啥要學正則表示式這種看似很晦澀的東西呢,因為現在很多搜尋的場景都是支援正則表示式的,學會了正則表示式就有如一把利劍在手。 本文較長,建議抽40分鐘完整的時間一次讀