做驗證的時候我們要做的,定義驗證失敗後的提示,編寫驗證的方法,然後呼叫驗證得到結果。
乙個驗證的過程,一般便是分為這幾步。
var validatorobj = ,
// 驗證的方法, 返回乙個布林值
methods: {}
},// 得到驗證結果
checkresult: {}
}
定義的錯誤提示可以自定義,至於 等則是用來做乙個識別符號,在驗證失敗後會將要驗證的引數替換掉識別符號
// 驗證失敗後的提示
messages: ',
max: '長度最多為 個字元',
min: '長度最小為 個字元',
length: '的長度在 到 個字元',
number: '必須是數字',
string: '必須是字母或者數字',
moblie: '必須是手機或者**號碼格式',
nochinese: '不能為中文',
lon: '範圍為-180.0~+180.0(必須輸入1到10位小數)',
lat: '範圍為-90.0~+90.0(必須輸入1到10位小數)',
url: '請輸入正確的訪問位址',
repeat: '兩次輸入的不一致',
email: '郵箱格式不正確',
password: '請輸入由大小寫字母+數字組成的6-16位密碼',
fixednum: '請輸入位數字'
}
在定義對應的驗證方法:
可以看到幾乎在每個驗證前面都加了乙個當資料為空的時候,返回為true,這是因為有的時候我們並不關心某乙個資料是否填寫,但一旦填寫了,又要求符合某種規則。所以如果要驗證非空的時候,需要使用兩個驗證屬性。
// 驗證的方法, 返回乙個布林值
methods: ,
max: obj => ,
min: obj => ,
length: obj => ,
number: obj => ,
string: obj => ,
moblie: obj => [\d])|(((400)-(\d)-(\d))|^((\d)|(\d|\d)-(\d)|(\d|\d)-(\d)-(\d|\d|\d|\d)|(\d)-(\d|\d|\d|\d))$)$/
return reg.test(obj.value)
},nochinese: obj => ,
lon: obj => \.\d|1[0-7]?\d\.\d|180\.0)$/
return reg.test(obj.value)
},lat: obj => \.\d|90\.0)$/
return reg.test(obj.value)
},url: obj => [pp]:\/\/|[hh][tt][pp][ss]:\/\/)(([a-za-z0-9-~]+)\.)+([a-za-z0-9-~\/])+$/
return reg.test(obj.value)
},repeat: obj => ,
email: obj => $/
return reg.test(obj.value)
},password: obj => $/
return reg.test(obj.value)
},fixednum: obj =>
}
呼叫驗證方法:
這裡是呼叫驗證函式的方法,和上面的定義結合起來。
傳入要驗證的規則,驗證的值,驗證的欄位名字,如果有條件則加上條件陣列
/** 1. 傳入驗證規則,得到驗證結果
2. @param
3. @param label: 驗證的欄位名稱
4. @param value: 驗證的值 (驗證重複的時候可以新增value1屬性)
5. @param rules: 驗證的規則陣列 例如: ['notnull', 'length'] 如果引數必填,第乙個引數為notnull
7. @return 驗證結果物件
*/// 得到驗證結果
checkresult: function (obj)
}// 如果驗證失敗, 得到驗證失敗的結果集
if (!result) ', item)})}
message = message.replace('', obj.label)
return
}return
}
把上面的步驟拼在一起,就可以完成乙個驗證函式。具體的需求和使用,可以根據專案自定義,但思路大致是這樣的。
使用示例: validate() // 驗證username不為空且長度在2-10之間
validate() // 驗證password由大小寫字母+數字組成的6-16位密碼
驗證返回結果:
/** * 傳入驗證規則,得到驗證結果
* @param
* @param label: 驗證的欄位名稱
* @param value: 驗證的值 (驗證重複的時候可以新增value1屬性)
* @param rules: 驗證的規則陣列 例如: ['notnull', 'length'] 如果引數必填,第乙個引數為notnull
* @return 驗證結果物件
*/function validate (obj) ',
max: '長度最多為 個字元',
min: '長度最小為 個字元',
length: '的長度在 到 個字元',
number: '必須是數字',
string: '必須是字母或者數字',
moblie: '必須是手機或者**號碼格式',
nochinese: '不能為中文',
lon: '範圍為-180.0~+180.0(必須輸入1到10位小數)',
lat: '範圍為-90.0~+90.0(必須輸入1到10位小數)',
url: '請輸入正確的訪問位址',
repeat: '兩次輸入的不一致',
email: '郵箱格式不正確',
password: '請輸入由大小寫字母+數字組成的6-16位密碼',
fixednum: '請輸入位數字'
},// 驗證的方法, 返回乙個布林值
methods: ,
max: obj => ,
min: obj => ,
length: obj => ,
number: obj => ,
string: obj => ,
moblie: obj => [\d])|(((400)-(\d)-(\d))|^((\d)|(\d|\d)-(\d)|(\d|\d)-(\d)-(\d|\d|\d|\d)|(\d)-(\d|\d|\d|\d))$)$/
return reg.test(obj.value)
},nochinese: obj => ,
lon: obj => \.\d|1[0-7]?\d\.\d|180\.0)$/
return reg.test(obj.value)
},lat: obj => \.\d|90\.0)$/
return reg.test(obj.value)
},url: obj => [pp]:\/\/|[hh][tt][pp][ss]:\/\/)(([a-za-z0-9-~]+)\.)+([a-za-z0-9-~\/])+$/
return reg.test(obj.value)
},repeat: obj => ,
email: obj => $/
return reg.test(obj.value)
},password: obj => $/
return reg.test(obj.value)
},fixednum: obj => }},
// 得到驗證結果
checkresult: function (obj)
}// 如果驗證失敗, 得到驗證失敗的結果集
if (!result) ', item)})}
message = message.replace('', obj.label)
return
}return
}} return validatorobj.checkresult(obj)
}export default validate
如何從0開始了解乙個儲存引擎
根據本人淺薄的經驗,了解乙個資料引擎可能涉及以下問題 目錄 1.概念 2.架構 3.部署 4.元資料 5.寫資料鏈路 6.查詢鏈路 階段總結 一些經常被關心的功能和特點 7.舊資料清理 8.資料的hash 9.離線檔案匯入匯出 10.故障恢復時間 11.對比其他db 先粗略看看是否適合自己的需求,從...
從 0 開始手寫乙個Tomcat,7 步搞定!
tomcat,這只3腳貓,大學的時候就認識了,直到現在工作中,也常會和它打交道。這是乙隻神奇的貓,今天讓我來抽象你,實現你!tomcat 是非常流行的 web server,它還是乙個滿足 servlet 規範的容器。那麼想一想,tomcat 和我們的 web 應用是什麼關係?從感性上來說,我們一般...
編寫乙個mysleep函式
在這之前,我寫了有關於訊號的相關知識,我在裡面講到了兩個函式,分別是alarm和pause兩個函式,這兩個函式是幹嘛的呢,我在這裡再介紹一遍。呼叫alarm 函式可以設定乙個鬧鐘 也就是告訴核心在 seconds 秒之後給當前程序發 sigalrm 訊號,該訊號的預設處理動作是終止當前程序。這個函式...