日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

微信小程序表單驗證怎么弄?

瀏覽:171日期:2022-07-15 16:31:26

微信小程序表單驗證怎么弄?微信小程序正式上線,相信很多人都已經開始使用了。簡單的表單驗證,也不算是驗證了,只是封裝了一下提示消息,免得自己去手動寫if else(大家都懂吧),用起來還行吧,自己動手豐衣足食。

微信小程序表單驗證怎么弄?

插件地址:https://github.com/skyvow/m-mall/blob/master/helpers/WxValidate.js

代碼示例:

/×*

* 創建驗證字段的工廠函數

*

* @param {Object} rules 驗證字段的規則

* @param {Object} messages 驗證字段的提示信息

*

*/

class WxValidate {

constructor(rules = {}, messages = {}) {

Object.assign(this, {

rules,

messages,

})

this.__init()

}

/×*

* __init

*/

__init() {

this.__initMethods()

this.__initDefaults()

this.__initErrorList()

}

/×*

* 初始化錯誤信息

*/

__initErrorList() {

this.errorList = []

}

/×*

* 初始化默認提示信息

*/

__initDefaults() {

this.defaults = {

messages: {

required: '這是必填字段。',

email: '請輸入有效的電子郵件地址。',

tel: '請輸入11位的手機號碼。',

url: '請輸入有效的網址。',

date: '請輸入有效的日期。',

dateISO: '請輸入有效的日期(ISO),例如:2009-06-23,1998/01/22。',

number: '請輸入有效的數字。',

digits: '只能輸入數字。',

idcard: '請輸入18位的有效身份證。',

equalTo: this.formatTpl('輸入值必須和 {0} 相同。'),

contains: this.formatTpl('輸入值必須包含 {0}。'),

minlength: this.formatTpl('最少要輸入 {0} 個字符。'),

maxlength: this.formatTpl('最多可以輸入 {0} 個字符。'),

rangelength: this.formatTpl('請輸入長度在 {0} 到 {1} 之間的字符。'),

min: this.formatTpl('請輸入不小于 {0} 的數值。'),

max: this.formatTpl('請輸入不大于 {0} 的數值。'),

range: this.formatTpl('請輸入范圍在 {0} 到 {1} 之間的數值。'),

}

}

}

/×*

* 初始化默認驗證方法

*/

__initMethods() {

const that = this

that.methods = {

/×*

* 驗證必填元素

*/

required(value, param) {

if (!that.depend(param)) {

return 'dependency-mismatch'

}

return value.length > 0

},

/×*

* 驗證電子郵箱格式

*/

email(value) {

return that.optional(value) || /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value)

},

/×*

* 驗證手機格式

*/

tel(value) {

return that.optional(value) || /^1[34578]d{9}$/.test(value)

},

/×*

* 驗證URL格式

*/

url(value) {

return that.optional(value) || /^(?:(?:(?:https?|ftp):)?//)(?:S+(?::S*)?@)?(?:(?!(?:10|127)(?:.d{1,3}){3})(?!(?:169.254|192.168)(?:.d{1,3}){2})(?!172.(?:1[6-9]|2d|3[0-1])(?:.d{1,3}){2})(?:[1-9]d?|1dd|2[01]d|22[0-3])(?:.(?:1?d{1,2}|2[0-4]d|25[0-5])){2}(?:.(?:[1-9]d?|1dd|2[0-4]d|25[0-4]))|(?:(?:[a-zu00a1-uffff0-9]-*)*[a-zu00a1-uffff0-9]+)(?:.(?:[a-zu00a1-uffff0-9]-*)*[a-zu00a1-uffff0-9]+)*(?:.(?:[a-zu00a1-uffff]{2,})).?)(?::d{2,5})?(?:[/?#]S*)?$/i.test(value)

},

/×*

* 驗證日期格式

*/

date(value) {

return that.optional(value) || !/Invalid|NaN/.test(new Date(value).toString())

},

/×*

* 驗證ISO類型的日期格式

*/

dateISO(value) {

return that.optional(value) || /^d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01])$/.test(value)

},

/×*

* 驗證十進制數字

*/

number(value) {

return that.optional(value) || /^(?:-?d+|-?d{1,3}(?:,d{3})+)?(?:.d+)?$/.test(value)

},

/×*

* 驗證整數

*/

digits(value) {

return that.optional(value) || /^d+$/.test(value)

},

/×*

* 驗證身份證號碼

*/

idcard(value) {

return that.optional(value) || /^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$/.test(value)

},

/×*

* 驗證兩個輸入框的內容是否相同

*/

equalTo(value, param) {

return that.optional(value) || value === that.scope.detail.value[param]

},

/×*

* 驗證是否包含某個值

*/

contains(value, param) {

return that.optional(value) || value.indexOf(param) >= 0

},

/×*

* 驗證最小長度

*/

minlength(value, param) {

return that.optional(value) || value.length >= param

},

/×*

* 驗證比較大長度

*/

maxlength(value, param) {

return that.optional(value) || value.length <= param

},

/×*

* 驗證一個長度范圍[min, max]

*/

rangelength(value, param) {

return that.optional(value) || (value.length >= param[0] && value.length <= param[1])

},

/×*

* 驗證最小值

*/

min(value, param) {

return that.optional(value) || value >= param

},

/×*

* 驗證比較大值

*/

max(value, param) {

return that.optional(value) || value <= param

},

/×*

* 驗證一個值范圍[min, max]

*/

range(value, param) {

return that.optional(value) || (value >= param[0] && value <= param[1])

},

}

}

/×*

* 添加自定義驗證方法

* @param {String} name 方法名

* @param {Function} method 函數體,接收兩個參數(value, param),value表示元素的值,param表示參數

* @param {String} message 提示信息

*/

addMethod(name, method, message) {

this.methods[name] = method

this.defaults.messages[name] = message !== undefined ? message : this.defaults.messages[name]

}

/×*

* 判斷驗證方法是否存在

*/

isValidMethod(value) {

let methods = []

for(let method in this.methods) {

if (method && typeof this.methods[method] === &#39;function&#39;) {

methods.push(method)

}

}

return methods.indexOf(value) !== -1

}

/×*

* 格式化提示信息模板

*/

formatTpl(source, params) {

const that = this

if (arguments.length === 1) {

return function() {

let args = Array.from(arguments)

args.unshift(source)

return that.formatTpl.apply(this, args)

}

}

if (params === undefined) {

return source

}

if (arguments.length > 2 && params.constructor !== Array) {

params = Array.from(arguments).slice(1)

}

if (params.constructor !== Array) {

params = [ params ]

}

params.forEach(function(n, i) {

source = source.replace(new RegExp("{" + i + "}", "g"), function() {

return n

})

})

return source

}

/×*

* 判斷規則依賴是否存在

*/

depend(param) {

switch(typeof param) {

case &#39;boolean&#39;:

param = param

break

case &#39;string&#39;:

param = !!param.length

break

case &#39;function&#39;:

param = param()

default:

param = !0

}

return param

}

/×*

* 判斷輸入值是否為空

*/

optional(value) {

return !this.methods.required(value) && &#39;dependency-mismatch&#39;

}

/×*

* 獲取自定義字段的提示信息

* @param {String} param 字段名

* @param {Object} rule 規則

*/

customMessage(param, rule) {

const params = this.messages[param]

const isObject = typeof params === &#39;object&#39;

if (params && isObject) return params[rule.method]

}

/×*

* 獲取某個指定字段的提示信息

* @param {String} param 字段名

* @param {Object} rule 規則

*/

defaultMessage(param, rule) {

let message = this.customMessage(param, rule) || this.defaults.messages[rule.method]

let type = typeof message

if (type === &#39;undefined&#39;) {

message = `Warning: No message defined for ${rule.method}.`

} else if (type === &#39;function&#39;) {

message = message.call(this, rule.parameters)

}

return message

}

/×*

* 緩存錯誤信息

* @param {String} param 字段名

* @param {Object} rule 規則

* @param {String} value 元素的值

*/

formatTplAndAdd(param, rule, value) {

let msg = this.defaultMessage(param, rule)

this.errorList.push({

param: param,

msg: msg,

value: value,

})

}

/×*

* 驗證某個指定字段的規則

* @param {String} param 字段名

* @param {Object} rules 規則

* @param {Object} event 表單數據對象

*/

checkParam(param, rules, event) {

// 緩存表單數據對象

this.scope = event

// 緩存字段對應的值

const data = event.detail.value

const value = data[param] || &#39;&#39;

// 遍歷某個指定字段的所有規則,依次驗證規則,否則緩存錯誤信息

for(let method in rules) {

// 判斷驗證方法是否存在

if (this.isValidMethod(method)) {

// 緩存規則的屬性及值

const rule = {

method: method,

parameters: rules[method]

}

// 調用驗證方法

const result = this.methods[method](value, rule.parameters)

// 若result返回值為dependency-mismatch,則說明該字段的值為空或非必填字段

if (result === &#39;dependency-mismatch&#39;) {

continue

}

// 判斷是否通過驗證,否則緩存錯誤信息,跳出循環

if (!result) {

this.formatTplAndAdd(param, rule, value)

break

}

}

}

}

/×*

* 驗證所有字段的規則,返回驗證是否通過

* @param {Object} event 表單數據對象

*/

checkForm(event) {

this.errorList = []

for (let param in this.rules) {

this.checkParam(param, this.rules[param], event)

}

return this.valid()

}

/×*

* 返回驗證是否通過

*/

valid() {

return this.size() === 0

}

/×*

* 返回錯誤信息的個數

*/

size() {

return this.errorList.length

}

/×*

* 返回所有錯誤信息

*/

validationErrors() {

return this.errorList

}

}

export default WxValidate

下面小編就給大家介紹一個小程序吧

嗨圖功能

微信小程序表單驗證怎么弄?

1、專題——DIY圖片的模板,點擊可以生成使用,分享到朋友圈。

2、分享墻——用戶上傳的自己DIY作品。

3、立即制作——可以用自己的圖來DIY。

4、告訴我——告訴產品的改進,內容的增加。

想要體驗怎么制作屬于自己個性朋友圈照片的用戶,掃一掃下面的二維碼就可以啦!還等什么,趕緊掃碼體驗,開啟你的嗨圖之旅吧!

微信小程序表單驗證怎么弄?
標簽: 微信
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品成人国产| 美国三级日本三级久久99| 日韩精品成人在线观看| 久久99久久久精品欧美| 91精品啪在线观看国产18| 亚洲在线观看| 国产欧美一区二区三区精品观看| 精品一区不卡| 亚洲欧美日韩国产一区二区| 国产三级精品三级在线观看国产| 亚洲黄色网址| 中文字幕av一区二区三区四区| 精品精品国产三级a∨在线| 伊人久久成人| 国产一区国产二区国产三区| 日韩午夜在线| 久久精品日韩欧美| 久久亚洲欧洲| 国产色播av在线| 亚洲va久久久噜噜噜久久| 91中文字幕精品永久在线| 首页亚洲欧美制服丝腿| 欧美丰满日韩| 日韩精品中文字幕一区二区| 色综合www| 青草综合视频| 五月综合激情| 粉嫩av一区二区三区四区五区 | 亚洲国产成人精品女人| 你懂的亚洲视频| 亚洲一区二区小说| 久久青草久久| 精品一二三区| 日韩av不卡在线观看| 欧美/亚洲一区| 精品久久97| 日本午夜精品视频在线观看| 亚洲成人三区| 日韩啪啪电影网| 欧美黑人做爰爽爽爽| 五月亚洲婷婷| 亚洲一区二区三区高清不卡| 日韩欧美国产精品综合嫩v| 国产福利一区二区精品秒拍 | 一区二区精品| 午夜精品影院| 97人人精品| 国产欧美日韩一区二区三区在线| 亚洲在线观看| 在线国产一区二区| 超碰超碰人人人人精品| 国产精品v日韩精品v欧美精品网站 | 欧美天堂视频| 国产精品香蕉| 日韩成人一级| 亚洲欧美网站在线观看| 日韩午夜精品| 亚洲免费成人| 五月综合激情| 亚洲国产日韩欧美在线| 久久久久久黄| 成人片免费看| 国产福利片在线观看| 久久av偷拍| 免费看久久久| 久久精品国产网站| 精品99久久| 精品三级av| 久久一区精品| 精品久久精品| 国产中文在线播放| 日韩美女一区二区三区在线观看| 国产美女高潮在线观看| 日韩免费在线| 亚洲性色视频| 国产模特精品视频久久久久| 香蕉成人久久| 一级欧美视频| 7777精品| 精品视频国内| 色网在线免费观看| 精品丝袜在线| 2023国产精品久久久精品双| 国产午夜久久| 日韩精品国产精品| 国产精品亚洲综合在线观看| 国产精品4hu.www| 成人台湾亚洲精品一区二区| 国产中文在线播放| 欧美日韩日本国产亚洲在线| 午夜宅男久久久| 日韩高清成人在线| 麻豆久久一区| 精品国模一区二区三区| 久久国产中文字幕| 亚洲综合三区| 日产欧产美韩系列久久99| 国产精品毛片aⅴ一区二区三区| 久久久国产精品入口麻豆| 日本不良网站在线观看| 黄色欧美日韩| 亚洲精品乱码日韩| 久久av资源| 特黄特色欧美大片| 91精品久久久久久久久久不卡| 最新亚洲激情| 日本午夜精品| av在线资源| 伊人久久亚洲美女图片| 日本va欧美va瓶| 久久中文在线| 亚洲福利久久| 日本亚洲欧美天堂免费| 国产一区日韩| 亚洲欧美日韩专区| 国产精品一区二区三区四区在线观看 | 欧美精品1区| 国产成人精品三级高清久久91| 在线看片国产福利你懂的| 亚洲午夜精品久久久久久app| 午夜a一级毛片亚洲欧洲| 久久亚洲人体| 五月天久久网站| 国产欧美自拍一区| 神马午夜久久| 日韩精品免费视频人成 | 欧美sss在线视频| 亚洲另类av| 国产成年精品| 美国三级日本三级久久99 | 欧美精品高清| 日本成人在线一区| 日韩啪啪电影网| 日本精品另类| 久久免费黄色| 国产极品模特精品一二| 欧美国产91| 美日韩一区二区三区| 黄色日韩在线| 精品国产精品久久一区免费式 | 欧美福利专区| 欧美激情 亚洲a∨综合| 91超碰国产精品| 久久精品日韩欧美| 亚洲免费成人av在线| 日本免费一区二区三区四区| 久久国产精品免费一区二区三区| 天堂中文在线播放| 欧美一级全黄| 日韩午夜黄色| 午夜久久中文| 国产经典一区| 亚洲视频二区| 久久国产免费| 精品国产麻豆| 日韩精品免费视频一区二区三区| 在线一区视频观看| 国产精品毛片aⅴ一区二区三区| 免费日韩视频| 日韩国产一区二区三区| 国产日本久久| 免费观看日韩电影| 天堂资源在线亚洲| 精品国产91| 欧美中文一区| 日韩精品一级中文字幕精品视频免费观看| 国语对白精品一区二区| 日本不卡高清视频| 香蕉久久国产| 亚洲福利一区| 成人羞羞视频播放网站| 精品99在线| 国产高清精品二区| 91国内精品| 日本成人在线不卡视频| 亚洲欧美日韩国产一区| 亚洲香蕉网站| 日韩精品网站| sm捆绑调教国产免费网站在线观看| 国产精品久久久免费| 日韩福利视频网| 日日夜夜免费精品| 免费人成在线不卡| 蜜桃国内精品久久久久软件9| 成人国产精品一区二区免费麻豆| 国产亚洲精aa在线看| 日本亚洲最大的色成网站www| 亚洲色诱最新| 99成人在线| 国产亚洲精品自拍| 91久久中文| 亚洲神马久久| 久久av一区| 爽爽淫人综合网网站| 日韩专区欧美专区| 蜜桃视频一区二区三区| 免费一区二区视频| 亚洲毛片网站| 日本视频中文字幕一区二区三区| 日本少妇精品亚洲第一区|