摘要:場景描述某表單中有一個郵箱的輸入框,但是為非必填項(xiàng),我們期望的結(jié)果不填寫可以驗(yàn)證通過如果填寫了郵箱驗(yàn)證郵箱格式代碼如下全部通過備用郵箱非必填提交未填寫郵箱運(yùn)行結(jié)果沒有達(dá)到期望結(jié)果,如下圖方案重寫驗(yàn)證規(guī)則官方有示例,可以自己重寫一個驗(yàn)
場景描述
某表單中有一個郵箱的輸入框,但是為非必填項(xiàng),我們期望的結(jié)果 1. 不填寫可以驗(yàn)證通過 1. 如果填寫了郵箱,驗(yàn)證郵箱格式
代碼如下
未填寫郵箱 【運(yùn)行結(jié)果】沒有達(dá)到期望結(jié)果,如下圖方案1:重寫驗(yàn)證規(guī)則
官方有示例,可以自己重寫一個驗(yàn)證規(guī)則
代碼如下
未填寫郵箱 【運(yùn)行結(jié)果】達(dá)到期望結(jié)果,如下圖
avalon內(nèi)置驗(yàn)證規(guī)則重寫,如下
function isRegExp(value) { return avalon.type(value) === "regexp" } var rmail = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/i var rurl = /^(ftp|http|https)://(w+:{0,1}w*@)?(S+)(:[0-9]+)?(/|/([w#!:.?+=&%@!-/]))?$/ function isCorrectDate(value) { if (typeof value === "string" && value) { //是字符串但不能是空字符 var arr = value.split("-") //可以被-切成3份,并且第1個是4個字符 if (arr.length === 3 && arr[0].length === 4) { var year = ~~arr[0] //全部轉(zhuǎn)換為非負(fù)整數(shù) var month = ~~arr[1] - 1 var date = ~~arr[2] var d = new Date(year, month, date) return d.getFullYear() === year && d.getMonth() === month && d.getDate() === date } } return false } avalon.shadowCopy(avalon.validators, { pattern: { message: "必須匹配{{pattern}}這樣的格式", get: function (value, field, next) { var elem = field.dom var data = field.data if (!isRegExp(data.pattern)) { var h5pattern = elem.getAttribute("pattern") data.pattern = new RegExp("^(?:" + h5pattern + ")$") } next(value === "" || data.pattern.test(value)) return value } }, digits: { message: "必須整數(shù)", get: function (value, field, next) {//整數(shù) next(value === "" || /^-?d+$/.test(value)) return value } }, number: { message: "必須數(shù)字", get: function (value, field, next) {//數(shù)值 next(value === "" || isFinite(value)) return value } }, date: { message: "日期格式不正確", get: function (value, field, next) { var data = field.data if (isRegExp(data.date)) { next(value === "" || data.date.test(value)) } else { next(value === "" || isCorrectDate(value)) } return value } }, url: { message: "URL格式不正確", get: function (value, field, next) { next(value === "" || rurl.test(value)) return value } }, email: { message: "email格式不正確", get: function (value, field, next) { next(value === "" || rmail.test(value)) return value } }, minlength: { message: "最少輸入{{minlength}}個字", get: function (value, field, next) { var num = parseInt(field.data.minlength, 10) next(value === "" || (value.length >= num)) return value } }, min: { message: "輸入值不能小于{{min}}", get: function (value, field, next) { var num = parseInt(field.data.min, 10) next(value === "" || (parseFloat(value) >= num)) return value } }, max: { message: "輸入值不能大于{{max}}", get: function (value, field, next) { var num = parseInt(field.data.max, 10) next(value === "" || (parseFloat(value) <= num)) return value } }, chs: { message: "必須是中文字符", get: function (value, field, next) { next(value === "" || /^[u4e00-u9fa5]+$/.test(value)) return value } } })方案2:修改源碼中addField方法
如果不想重寫驗(yàn)證規(guī)則 修改源碼 avalon/src/directives/duplex/addValidateField.js 添加2行代碼,打包 運(yùn)行后結(jié)果達(dá)到預(yù)期
if (rules["required"] === undefined || rules["required"] === false) field.norequired = true;
如下圖
說明:
這2行代碼是指 在"ms-rules"中沒有配置必填項(xiàng)"required"規(guī)則或"required"設(shè)置為false時, 設(shè)置該field為非必填,field.norequired為true 在源碼 avalon/src/directives/duplex/addValidateField.js 中有這么一段代碼
if (field.norequired && value === "") { a = true }
如下圖紅框
此方案我自測是沒問題的,但不知是否全面,希望avalon的后續(xù)版本會考慮此情況
歡迎指正
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80296.html
摘要:創(chuàng)建詳解通過上面的快速創(chuàng)建我們接下來將通過上面的例子來進(jìn)行創(chuàng)建操作中的詳細(xì)設(shè)置說明。高階設(shè)置高階設(shè)置中將針對容器進(jìn)行詳細(xì)的參數(shù)設(shè)置。掛載路徑卷名稱注意如沒有創(chuàng)建卷設(shè)置,在掛載卷中將選擇不到具體的卷名稱,請先創(chuàng)建卷設(shè)置??焖賱?chuàng)建快速創(chuàng)建Cube實(shí)例點(diǎn)擊Cube的創(chuàng)建按鈕進(jìn)入創(chuàng)建頁面,為你的容器組起一個名字;選擇一個倉庫內(nèi)的鏡像,這里快速創(chuàng)建我選擇的UCloud鏡像倉庫nginx鏡像1.17.1...
摘要:驗(yàn)證結(jié)果會保存在組建實(shí)例的屬性下。表單整體校驗(yàn)結(jié)果和單個字段校驗(yàn)結(jié)果。郵政編碼是必填項(xiàng)對象字面量對象字面量語法適合需要額外參數(shù)的校驗(yàn)器。如限制輸入長度的校驗(yàn)器需要說明限制長度多少。這樣可以用來動態(tài)綁定校驗(yàn)規(guī)則。例如重復(fù)密碼功能。 Vue-validator 是Vue的表單驗(yàn)證插件 Vue版本:1.0.24Vue-validator版本:2.1.3 基本使用 ...
摘要:需求默認(rèn)都是必選下拉選擇的時候選擇必填,活動名稱為必填,需要校驗(yàn)和顯示選擇非必填,活動名稱不做校驗(yàn),隱藏初始校驗(yàn)規(guī)則經(jīng)測試,網(wǎng)上其他的方式都沒有實(shí)現(xiàn)需求,動態(tài)切換中的沒有作用因?yàn)榘凑找韵碌膶懛ǖ脑挘诮M件初始化后校驗(yàn)規(guī)則就定型了,切換也沒 ? 需求 默認(rèn)都是必選 下拉選擇的時候 選擇必填,活動名稱為必填,需要校驗(yàn)和顯示* 選擇非必填,活動名稱不做校驗(yàn),隱藏* showImg(https...
閱讀 3051·2021-09-22 15:52
閱讀 2918·2019-08-30 15:55
閱讀 2713·2019-08-30 15:53
閱讀 2464·2019-08-30 13:21
閱讀 1634·2019-08-30 13:10
閱讀 2492·2019-08-26 12:09
閱讀 2579·2019-08-26 10:33
閱讀 1811·2019-08-23 18:06