diff --git a/package.json b/package.json index 0737cfa..4762336 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "stylelint": "^9.3.0", "stylelint-config-vusion": "^1.1.2", "vue": "^2.6.10", - "vue-cli-plugin-vusion": "^0.5.5", + "vue-cli-plugin-vusion": "^0.5.6", "vue-template-compiler": "^2.6.10", "vusion-hooks": "^0.2.2", "vusion-utils": "^0.4.3" diff --git a/src/components/u-validator.vue/docs/api.md b/src/components/u-validator.vue/docs/api.md index 2009cc0..0eab266 100644 --- a/src/components/u-validator.vue/docs/api.md +++ b/src/components/u-validator.vue/docs/api.md @@ -13,6 +13,7 @@ | validating-options | Object | | 验证辅助对象。在 Rule 的 `validate` 方法中使用 | | validating-value | Any | | 临时修改验证值 | | validating-process | Function | | 验证前对值进行预处理 | +| manual | Boolean | `false` | 是否采取手动验证。如果为`true`,则UValidator将不会在监听到子组件的`input`、`change`和`blur`事件后进行相应的验证。 | ### Computed diff --git a/src/components/u-validator.vue/docs/rules.md b/src/components/u-validator.vue/docs/rules.md index d3ebef5..50fa3ae 100644 --- a/src/components/u-validator.vue/docs/rules.md +++ b/src/components/u-validator.vue/docs/rules.md @@ -341,6 +341,22 @@ export default { ``` +#### noDuplicates(arg: any[]) input + +接受一个数组作为参数,验证数组中是否存在重复项。 + +``` html + + + 水杯 + 咖啡 + 坚果 + 毛巾 + 毛巾 + + +``` + ### 类型判断 #### string input+blur @@ -718,3 +734,352 @@ export default { ``` + +#### alphaDash input+blur + +必须由字母或下划线组成。 + +``` html + + + +``` + +#### alphaNumDash input+blur + +必须由字母、数字或下划线组成。 + +``` html + + + +``` + +#### alphaSpaces input+blur + +必须由字母或空格组成。 + +``` html + + + +``` + +#### lowerCase input+blur + +不能出现大写字母。 + +``` html + + + +``` + +#### upperCase input+blur + +不能出现小写字母。 + +``` html + + + +``` + +#### halfWidth input+blur + +需要输入半角字符。 + +``` html + + + +``` + +#### fullWidth input+blur + +必须输入全角字符。 + +``` html + + + +``` + +#### ascii input+blur + +必须输入ascii字符。 + +``` html + + + +``` + +#### base64 blur + +必须输入base64编码。 + +``` html + + + +``` + +#### byteLength(min: number, max: number) input+blur + +输入字符串的字节长度范围限制。 + +- `min`:最小字节长度 +- `max`:最大字节长度 + +``` html + + + +``` + +#### dataURI blur + +必须输入dataURI编码。 + +``` html + + + +``` + +#### divisibleBy(divisor: number) blur + +输入数字能否被相应除数整除。 + +- `divisor`:除数 + +``` html + + + +``` + +#### hash(algorithm: string) blur + +输入编码是否符合指定哈希算法。 + +- `algorithm`:算法名称,支持`md4`、`md5`、`sha1`、`sha256`、`sha384`、`sha512`、`ripemd128`、`ripemd160`、`tiger128`、`tiger160`、`tiger192`、`crc32`以及`crc32b` + +``` html + + + +``` + +#### md5 blur + +输入编码是否符合md5算法。 + +``` html + + + +``` + +#### hex blur + +输入数字是否是十六进制。 + +``` html + + + +``` + +#### hexColor blur + +输入字符串是否是十六进制颜色码。 + +``` html + + + +``` + +#### creditCard blur + +输入信用卡号码是否合法。 + +``` html + + + +``` + +#### fqdn blur + +输入全限定域名是否合法。 + +``` html + + + +``` + +#### ipOrFQDN blur + +输入内容是否为一个合法IP或全限定域名。 + +``` html + + + +``` + +#### isbn(version: number) blur + +输入内容是否为一个合法的国际标准书号(ISBN)。 + +- `version`:ISBN版本,接受`10`或`13` + +``` html + + + +``` + +#### issn blur + +输入内容是否为一个合法的国际标准连续出版物号(ISSN)。 + +``` html + + + +``` + +#### isin blur + +输入内容是否为一个合法的国际证券识别码(ISIN)。 + +``` html + + + +``` + +#### iso8601(strict: boolean) blur + +输入内容是否为合法的ISO8601日期。 + +- `strict`: 是否检测闰年日期。如果`strict`的值为`true`,则`2019-02-29`这样的日期属于非法日期 + +``` html + + + +``` + +#### iso31661Alpha2 blur + +输入内容是否为合法的ISO 3166-1 Alpha-2国家代码。 + +``` html + + + +``` + +#### iso31661Alpha3 blur + +输入内容是否为合法的ISO 3166-1 Alpha-3国家代码。 + +``` html + + + +``` + +#### json input+blur + +输入字符串是否可以被解析为JSON格式。 + +``` html + + + +``` + +#### jwt blur + +输入字符串是否为合法的JSON Web Token。 + +``` html + + + +``` + +#### latLong blur + +输入字符串是否为合法的经纬度坐标。 + +``` html + + + +``` + +#### mobile (locale?: any[], strict?: boolean) blur + +输入内容是否为合法的手机号。 + +- `locale`:所在地区,例如`zh-CN`、`ja-JP`等。可以是一个字符串或数组。如果不填,则尝试自动匹配所有地区。 + +- `strict`:是否检验国家代号。如果为`true`,则必须以`+`和国家代码开头。 + +``` html + + + +``` + +#### mongoId blur + +输入字符串是否为合法的MongoDB对象ID。 + +``` html + + + +``` + +#### postalCode(locale: string) blur + +输入字符串是否为合法的邮政编码。 + +- `locale`:所在地区。例如`CH`、`JP`等。 + +``` html + + + +``` + +#### uuid(version?: number) blur + +输入字符串是否为合法的UUID。 + +- `version`:采用的UUID版本。接受`3`、`4`和`5`。如果不填,则尝试自动匹配所有版本。 + +``` html + + + +``` + +#### chinese input+blur + +输入字符串是否为合法的中文内容。 + +``` html + + + +``` \ No newline at end of file diff --git a/src/components/u-validator.vue/index.js b/src/components/u-validator.vue/index.js index 9f29687..65ba50e 100644 --- a/src/components/u-validator.vue/index.js +++ b/src/components/u-validator.vue/index.js @@ -26,6 +26,7 @@ export const UValidator = { validatingOptions: Object, validatingValue: null, validatingProcess: { type: Function, default: (value) => value }, + manual: { type: Boolean, default: false }, }, data() { return { @@ -161,7 +162,7 @@ export const UValidator = { this.$nextTick(() => this.validate('submit', true).catch((errors) => errors)); }, onInput(value) { - if (this.currentTarget === 'validatorVMs') + if (this.currentTarget === 'validatorVMs' || this.manual) return; if (!this.fieldTouched) @@ -175,7 +176,7 @@ export const UValidator = { }); }, onChange($event) { - if (this.currentTarget === 'validatorVMs') + if (this.currentTarget === 'validatorVMs' || this.manual) return; if (!this.fieldTouched) @@ -193,7 +194,7 @@ export const UValidator = { this.currentMessage = this.message; }, onBlur() { - if (this.currentTarget === 'validatorVMs') + if (this.currentTarget === 'validatorVMs' || this.manual) return; if (!this.fieldTouched)