前言

老是遇到一些朋友问一些element-ui组件使用相关的基础问题,因为官方文档上并没有提供所有琐碎的功能代码demo。从这里开始我会根据我实际遇到的问题记录一些常见的官方文档没有详述的功能代码,供给大家拓展思路。

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: '请输入手机号',{ pattern: /^1[34578]\d{9}$/,message: '目前只支持中国大陆的手机号码' }
],

在element-ui的源码中搜索blur,你会很容易看到除了blur 还有focus、input,非常贴心基本满足了表单验证的入门需求。

2. 表单局部提交后端验证

在一些输入项目较多的表单提交中,比如说注册时填写的用户名,通常我们会对用户名是否重复进行验证,这是就需要调用服务来验证,这种略显复杂的验证,就需要自定义验证规则来实现。看下面的代码:

// 注意validatePass是属于data的,但不在return中。
data () {
let validatePass = (rule,value,callback) => {
    if (value.length >= 8) {
                let params = {
                    'account': value
                }
                axios.post('localhost:8080/verifyUserAccount',params)
                .then(function (response) {
                    if (response.data.err) {
                        callback(response.data.msg)
                    } else {
                        callback()
                    }
                })
                .catch(function () {
                    callback(new Error('服务异常'))
                })
            } else {
                callback()
            }
}

//这是验证规则,当然了你也可以同时使用基本的验证规则
account: [
    { validator: validatePass,trigger: 'blur' }
]

注意:validatePass 自定义规则中每个执行流程中都必须附带callback(),这样才能明确通过验证的情况下去掉输入框上的loading。要显示的错误提示则可以new Error(“xxxx”)即可。

3. 综合来看

通常可以把所有规则都写在自定义的规则中,即可实现较为复杂的验证,实际上我们可以再validatePass里面调用根实例下所有data methods...,一个很简单的例子是实现两次输入的密码是否相同的验证,看下面的代码:

let validatePass = (rule,callback) => {
            if (value === '') {
                callback(new Error('请再次输入密码'))
            } else if (value !== this.ruleForm.password) {
                callback(new Error('两次输入密码不一致!'))
            } else {
                callback()
            }
        }

就这么简单就可以实现非vuejs情况下是非啰嗦的验证。而且样式也不会很丑,当然了任然可以选择自定义样式。这个以后再记录。

4. 写在最后的

以上三点已经完全覆盖了所有表单验证的情况,可以实现非常复杂的验证。正式基于这些原因,我坚信element-ui是正确的选择。我将会继续写一些剪短的文章补充文档的遗漏。同时如果你也跟我一样喜欢element-ui欢迎跟我探讨,我们新建了一个qq群478694438,方便大家交流。最后喊一下口号:不拘泥于原理,完全立足于实现!

5. 另文中涉及到的源码我将会上传到讨论群中,不足之处持续更进,共同探讨。

饿了么组件库element-ui正则表达式验证表单,后端验证表单的更多相关文章

  1. HTML5新增form控件和表单属性实例代码详解

    这篇文章主要介绍了HTML5新增form控件和表单属性实例代码详解,需要的朋友可以参考下

  2. wordpress添加Html5的表单验证required方法小结

    这篇文章主要介绍了wordpress添加Html5的表单验证required方法小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. HTML5数字输入仅接受整数的实现代码

    这篇文章主要介绍了HTML5数字输入仅接受整数的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. html5录音功能实战示例

    这篇文章主要介绍了html5录音功能实战示例的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. HTML5表单验证特性(知识点小结)

    这篇文章主要介绍了HTML5表单验证特性的一些知识点,本文通过实例代码截图的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. ios – 使用大写符号在字符串swift中获取URL的正则表达式

    我尝试在文本中获取URL.所以,在此之前,我使用了这样一个表达式:但是当用户输入带有大写符号的URL时(例如Http://Google.com,它与它不匹配)我遇到了问题.我试过了:但什么都没发生.解决方法您可以使用正则表达式中的i内联标志关闭区分大小写,有关可用正则表达式功能的详细信息,请参阅FoundationFrameworkReference.(?ismwx-ismwx)Flagsetti

  7. ios – 如何在Swift 3中使用正则表达式?

    解决方法我相信.当没有其他选项适用时,将使用.allZeros.因此,使用Swift3,您可以传递一个空的选项列表或省略options参数,因为它默认为无选项:要么请注意,在Swift3中,您不再使用error参数.它现在抛出.

  8. ios – lldb断点在类目标c中的所有方法

    如何使用lldb在ObjectiveC类中的所有方法上自动设置断点?

  9. ios – CLGeocoder错误. GEOErrorDomain代码= -3

    有没有关于apple的地理编码请求的文档?谢谢你提前.更新这是我的整个代码请求解决方法在搜索到答案后,它在Apples文档中!

  10. ios – 调用异步方法的方法的单元测试

    我想我有这些代码行:我想为该代码编写一个单元测试.对于initializeHomeData和initializeAnythingElse,我可以编写单元测试,如:我的问题是,如何测试reset()?我应该在testReset()中调用它们,如:但我认为这不是适当的实施.解决方法你是对的.要测试重置,您需要调用reset,而不是内部方法.话虽这么说,重置目前的编写方式使其不可测试.您能够如此轻松地测

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部