- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
版本
VueJs:2.3.3
Vee-Validate:2.0.0-rc.25
描述
我有一个自定义组件。这是一个带有字符计数器的输入,我尝试将 vee-validate 放入该输入中。我想在提交表单时显示错误。我按照 vee-validate 文档中的每一步操作,但它不起作用。我的表单自行提交,忽略任何输入的错误。
重现步骤:
使用 vee-validate 创建自定义组件
代码:
Parent.vue
<vue-input maxlength="20" minlength="3" placeholder="works"
validate="required|numeric" v-model="dataItem.teste" name="teste"></vue-input>
Component.js
Vue.component('vue-input', {
props: ['maxlength', 'minlength', 'placeholder', 'validate', 'value', 'name'],
template: `<div>
<div class="input-group">
<input type="text" :name="name" :value="value"
@input="$emit('input', $event.target.value);
counter = $event.target.value.length"
:maxlength="maxlength" :placeholder="placeholder"
v-validate="validate"
:class="{'is-danger': errors.has(name), 'form-control' : true}">
Erros: {{errors}}
<span class="input-group-addon">
{{ maxlength - counter }}
</span>
<span v-show="errors.has(name)" class="text-danger m-t-xs">
{{ errors.first(name) }}
</span>
</div>
</div>`,
data: () => ({
counter: 0
})
});
最佳答案
您可以使用父$validator
在子组件中。
参见created()
Hook 子组件:
Children.vue
<template>
<div>
<div class="input-group">
<input
type="text"
:name="name"
:value="value"
@input="handleInput"
:maxlength="maxlength"
:placeholder="placeholder"
v-validate="validate"
:class="{'is-danger': $errors.has(name), 'form-control' : true}"
>
Errors: {{ $errors }}
<span class="input-group-addon">
{{ maxlength - counter }}
</span>
<span v-show="$errors.has(name)" class="text-danger m-t-xs">
{{ $errors.first(name) }}
</span>
</div>
</div>
</template>
<script>
export default {
name: 'Temp',
props: ['maxlength', 'minlength', 'placeholder', 'validate', 'value', 'name'],
data: () => ({
counter: 0
}),
methods: {
handleInput (event) {
this.$emit('input', event.target.value)
this.counter = event.target.value.length
}
},
created () {
this.$validator = this.$parent.$validator
}
}
</script>
Parent.vue
<children
maxlength="20"
minlength="3"
placeholder="works"
validate="required|numeric"
v-model="dataItem.teste"
name="teste"
></children>
有 2 个更好的支持解决方案,但您需要移动 <span>
在 Parent.vue
中进行验证组件,因为 errors
/$validator
将不在 Children.vue
中提供组件。
此外,我无法能够在同一表单中拥有多个具有相同名称的输入组件,但您可以查看它们并进行测试:
解决方案1
你可以使用Vue的provide/inject API :
Children.vue
export default {
inject: ['$validator'],
// ...
}
解决方案2
使用 VeeValidate 的 constructor options :
Children.vue
export default {
$_veeValidate: {
// value getter
value () {
return this.value
},
// component name getter
name () {
return 'children'
}
}
// ...
}
关于vue.js - 自定义组件中的 VueJS Vee-validate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47982820/
我需要使用 vee-validate 验证美国电话号码 XXX-XXX-XXXX basic regex :(?:\d{3}-)\d{3}-\d{4} .正则表达式工作正常 by itself ,但不
版本: VueJs:2.2.6 Vee 验证:^2.0.0-beta.25 描述: 我正在做一个项目,我使用 laravel-vue-starter 作为基础模板。 我想对密码使用自定义验证。所以我用
我有以下表格:
我正在使用 vuejs 2 并使用 vee-validate 2.0.0-beta.18 进行验证。但是当我调用 this.$validator.validateAll() 时遇到问题,它只验证一个字
我正在使用 vee-validate 3.2.1。我有一个可以禁用的字段,基于其他字段的值,如果启用,则该字段是必需的,但如果禁用,则不需要该字段。 我的领域是这样的
我在表单中有多个由 vee-validate 验证的输入,它运行良好,但我只想检查事件的某些字段。所以在看到一个关于这个问题的问题后https://github.com/baianat/vee-val
我正在尝试更改 vee-validate 中的错误消息,但它不起作用... 有人知道如何解决这个问题吗? import VeeValidate from "vee-validate"; import
我在我的 Vue 项目中创建了一个输入组件,并在我的表单中使用了这个组件。我想使用 vee-validate 来验证我的输入。 首先,我尝试像正常输入一样验证我的组件,但在显示错误消息和检查 Vue
我创建了一个设置页面,用户可以在其中更新他们的电子邮件地址。一切正常,但突然验证不再更新。只有输入字段的第一次更改会触发 validateState()。 任何进一步的更改都不会触发此功能,因此该字段
我在一页上有一个用户名片列表。我需要使用索引来区分每张卡片上的字段名称。前任。 userDob${i} 我还必须为这些用户输入创建自定义消息。通常对于自定义消息,我可以简单地写 custom: {
我正在使用 Laravel - 5.8 和 Vue.js。我的问题是关于如何为 Vee-Validate 库中的规则显示自定义错误消息。我的“必需”规则的自定义消息没有显示,而是显示:“名字字段是必需
我正在尝试验证动态添加的输入字段。每当我只有一行输入要验证时,效果都很好。 工作案例: 但是,每当我添加一行时,验证都会同时验证第一行和添加的行 - 而不是单独验证每一行。这是问题案例。 问题案例:
我正在尝试使用 Vee Validate 要求两个输入字段之一,名称或位置,但它们不能都为空。我收到此错误 - '指令验证绑定(bind) Hook 错误:“TypeError:无法读取未定义的属性'
验证一组字段时,对于隐藏在具有 v-if 属性的 DOM 中的字段会显示错误。 例如,我有 3 个字段: 当我运行我的提交函数时,我正在检查所有字段是否包含错误: this.$validator
我有 2 个字段要验证,但在我提交后总是在方法 validateBeforeSubmit() 中返回 true。 Whitout 按钮提交它工作得很好,并以良好的语言返回 errors.first(n
我继承了一个 Vue 站点,该站点的表单使用 Vee Validate 2.x 遇到严重的输入延迟。 我迁移到 3.2.4 (vue 2.6.10) 并遵循迁移指南,但我只看到验证检查我的最终输入。
我正在尝试通过以下方式验证所有输入 this.validator.validateAll().then((result) => { console.log(result
在这种情况下,我无法理解如何转义单引号和双引号: v-validate="{ min:3, max:200, url:true, regex: /^(http)?s?:?(\/\/[^"']*\.(?
我正在尝试使用 vee-validate 根据其他字段(选择)的选择来验证 3 个字段(文本字段),但我似乎不知道如何做到这一点。 基本上,我有一个包含 5 个值的选择框,如果所选值等于 1 或 2,
我正在尝试使用 vee-validate 制作一个简单的表单验证页面。但似乎有些东西被破坏了,我不确定我到底做错了什么。 我如何收到错误:错误未定义。 asdfasd
我是一名优秀的程序员,十分优秀!