npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-better-verify

v1.0.2

Published

一个基于 vue 的验证插件 支持必填项 验证临时跳过等功能

Downloads

9

Readme

这个库不更新了,请使用新的库 vue-best-verify

vue-best-verify 链接:vue-best-verify - npm (npmjs.com)

vue-better-verify

一个基于 vue 的表单验证指令 支持自定义扩展正则 临时跳过验证 并且提供了完美的密码相等性验证

安装

yarn add vue-better-verify // 这是推荐的安装方式使用 yarn 来安装,或者使用下面的方法
npm install vue-better-verify --save // 不推荐

简述

这个包诞生的目的就是让表单类控件的验证更加的方便、清晰,没有过于复杂的规则,但是又提供了应对各种场景的高级功能,但是请放心这些高级功能也将是非常直观易用的,对于一些没有提供的功能,大多是因为这些功能应该由你自己来做,例如:验证失败的提示语,验证字符的长度等

视频教程

还没有。。。

适用范围

  • html 原生 input 库
  • 其他 ui 框架的 input 组件
  • 前期的版本没有实现对 select checkbox 等的验证是因为这些验证主要是空验证,是可以自己在该插件的基础上进一步封装的功能,当然后续也可能逐渐支持这些元素

使用方式

// main.js
import Vue from "vue"
import vueVerify from "vue-better-verify"

Vue.use(vueVerify)
// 组件内
<template>
	<div>
        <label>密码</label>
        <input v-verify.equal></input>
    </div>
	<div>
        <label>确认密码</label>
		<input v-verify.password.equal="passVerify"></input>
		<template v-if="!passVerify.isFirst">
            <div style="color:red;" v-if="!passVerify.regExp">密码格式错误</div>
            <div style="color:red;" v-if="!passVerify.equal">两次密码输入不一致</div>
		</template>	
    </div>
	
</template>

<script>
export default {
    data () {
        return {
            passVerify: { // 其实你也可以直接写个空对象,然后直接使用 empty equal regExp 这些值
                isFirst: true, // 是否是第一次加载 这个状态很重要用于控制页面加载的时候不显示你预设的提示语
                empty: "", // 空验证的结果
                equal: "", // 相等性验证的结果
                regExp: "" // 正则验证的结果
            }
        }
    }
}
</script>

语法解释

<!-- 其中命名空间可以省略 equal 只在 2 个或以上输入框做相等性验证的时候才是必要的  -->
<input v-verify:命名空间.规则1.规则2.equal="当前标签验证状态"></input>

正则的扩展

默认插件已经提供了一些基本的正则:

phone: /^1[2-9][0-9]{9}$/
email: /^\w+@\w+\.\w+$/
password: /^(?=.*\d)(?=.*[A-z])[\w_]{6,18}$/
sms: /^\d{6}$/ // 6位数字验证码验证

规则可以被联合

<!-- 下面是一个可以输入手机号也可以输入邮箱的输入框 -->
<input v-verify.phone.email="verify"></input>

规则可以被扩展

// 想扩展规则可以在入口处进行全局设置
import Vue from "vue"
import vueVerify from "vue-better-verify"

// 例如我要添加一个中文名的正则
Vue.use(vueVerify, {
    regExp: {
        cname: /^[\u4e00-\u9fa5]{2,4}$/ // 添加的自定义正则
    },
    defaultStyle: true // 这个值默认就是 true 验证框在验证失败的时候有一个默认的红色提醒,由这个属性来控制
})

扩展之后可以直接使用<input v-verify.cname></input>

获取组件所有的验证是否通过

this.$verify.命名空间.all // 默认没有设置命名空间的情况下,命名空间为 default

手动验证

手动验证功能很重要,他的使用方式也很简单

// 验证默认命名空间的所有输入框
this.$verify.doVerify()
// 验证所有命名空间
this.$verify.doVerify("all")
// 验证特定命名空间
this.$verify.doVerify("命名空间")

高级(动态跳过验证、动态切换必填状态、联合命名空间)

联合命名空间

你可能会遇到这样的场景,注册页面用户可以切换选择手机注册或者邮箱注册,这里的问题是密码框是可以共用的,手机和邮箱的框不公用,那么用户在手机注册的时候,你势必要连着未显示的邮箱一起验证了,我们想做的是在用户手机注册的时候跳过邮箱框的验证

在最开始是可以变通的通过命名空间来解决这个问题,他们之间冲突的原因就是默认都在一个叫做 default 的命名空间,但是如果将邮箱验证设定一个 email 命名空间,手机验证设定一个 phone 命名空间,密码可以使用默认的命名空间,那么手机注册的时候只需要联合判断 phone 和 default,邮箱雁阵则联合判断 email 和 default

动态跳过验证

新的 api 可以在一个命名空间下解决上述的问题,在元素上加入 skip 值为布尔,则可以动态跳过当前框的验证,true 的时候表示要跳过 false 表示不跳过,默认为 false

<input v-verify.email="emailVerify" :skip="skip"></input>

export default {
	data () {
		return {
			emailVerify: {},
			skip: true
		}
	}
}

动态切换必填状态

在标签中添加 need 属性可以设置框为必填项,他也支持动态值,true 为必填 false 为非必填,并且你可以随时更改,这是有相应的应用场景的,有的表单在新增的时候个别输入框是必填项,但是如果编辑的时候则是非必填,此时就用到了这个功能。

注意:设为必填不影响 empty 空验证的结果,他只影响最终联合验证的结果,因为在联合验证的时候如果发现是非必填的那么就会忽略掉 empty 的值

注意事项

  • 在使用的过程中请勿在输入框外层使用 v-if 而应该使用 v-show 这是因为 v-if 会清楚 input 的 html 结构 而验证是依赖于 dom 的
  • 可以在提示信息中使用 v-if