GitHub: https://github.com/lyricat/vanilla-form-validator
DEMO: https://lyricat.github.io/vanilla-form-validator/demo/
假设我们有一个包含 4 个字段的注册表单,每个字段都有不同的要求:
另外,需要一个来自电子邮件和电话领域:如果您填写电子邮件,电话是可选的,反之亦然。
根据上述规则,我们可以定义如下规则:
var rule = [
'AND',
'name',
['OR',
['RE', /^.+@.+$/, 'email'],
['RE', /^[0-9]+$/, 'phone'],
],
['RE', /^[0-9a-zA-Z]{5}[0-9a-zA-Z]+$/, 'password'],
]
可以传入一个 form 元素(如果在浏览器环境):
function onSubmit(button, evt) {
var form = document.getElementById('form')
var ret = FormValidator.test(form, rule)
console.log(ret)
}
也可以传入一个字典:
var ret = FormValidator.test(form, rule)
console.log(ret)
会得到这样的输出
{
"pass": true, // 校验通过没有
"fields": {
"name": {
"pass": true, // 这个字段校验通过没有
"value": "abc" // 这个字段的内容
},
"email": {
"pass": true,
"value": "123@abc.com"
},
"phone": {
"pass": false,
"value": "11223344xx"
},
"password": {
"pass": true,
"value": "abcdefg"
}
},
"message": "Pass."
}
按照上文的输出,phone 字段没有校验通过,但是由于 email 和 phone 取一个就行,所以整体是通过了的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.