- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 vuelidate 中添加可选验证对象的正确方法是什么?
给定验证形状:
validations: {
vehicles: {
$each: {
type: {
required
},
engine: {
required: requiredIf((vehicle) => vehicle.type == 'car'),
size: {
required
},
power: {
required
}
}
}
}
}
我的期望是,对于自行车
类型的车辆,我不需要提供尺寸和功率,因为不需要其父引擎
。但是验证返回无效。
最佳答案
您可以做的不是要求引擎的每个子字段都是必需的,而是要求每个引擎都具有 size
和 power
,这样每次都有引擎必须有这些 key 。将其与 requiredIf 一起添加,您将得到以下内容:每辆车都必须有一个类型,如果它是汽车,则需要一个发动机,并且每个发动机必须有一个功率和尺寸
。
下面的代码片段显示它正在工作。
Vue.use(vuelidate.default);
let { required, requiredIf, helpers } = validators;
const contains = (param) =>
(value) => !helpers.req(value) ||
param.reduce((accum, curr) => accum && curr in value, true);
var app = new Vue({
el: '#app',
data: () => ({
vehicles: [
{
type: 'car',
engine: {
size: 5,
power: 2.5,
}
},
{
type: 'bike',
}
]
}),
validations: {
vehicles: {
$each: {
type: { required },
engine: {
required: requiredIf((value) => value.type === 'car'),
contains: contains(['size', 'power']),
}
}
}
},
created() {
console.log(this.$v.$invalid);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuelidate@0.7.5/dist/vuelidate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuelidate@0.7.5/dist/validators.min.js"></script>
<div id="app"></div>
关于javascript - vuelidate 中可选的嵌套验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60225789/
如何验证电子邮件? 你能举一个带有错误信息的例子吗? 文档没有提供足够的细节。 似乎没有什么像v-if="!$v.user.email.email" 以下代码也不起作用 validations: {
好的 - 搜索了很长一段时间,但找不到示例或使用 Vuelidate 的 OR 验证器。 this github issue中提到的那个无效,问题在不提供有效 OR 示例的情况下得到解决。 docs
在我们的 Vue 应用程序中,我们使用 Vuelidate用于表单验证。存在这种行为,即在页面呈现时验证字段,而仅应在表单提交中验证字段,如在提交处理中使用 $v.invalid 和 $v.touch
在 vuelidate 中添加可选验证对象的正确方法是什么? 给定验证形状: validations: { vehicles: { $each: { t
我正在为此表单使用 vuelidate 的电子邮件验证器: OnSite Contact Email Please provide a valid On
我正在使用 Vue,为了验证,Vuelidate . 当使用执行 AJAX 调用的自定义验证器时,它会在页面加载时触发多次,甚至在用户交互之前(vuelidate 的 $touch)。 在第一次加载这
我在使用 vuelidate 进行表单验证时遇到问题。我正在使用 Vue 2.9.6 和 vuelidate 0.7.5 我建议在阅读我的问题描述时打开这个 jsfiddle: jsfiddle.ne
我正在尝试结合前端和后端验证。 例如,在用户输入电子邮件的注册表单上,前端有一个 email 验证器,后端有一个 unique 验证器。 如果后端失败,则错误消息将保存到 requestErrorMe
在 Vuejs 中,在遵循 Vuelidate 安装说明 ( https://vuelidate.js.org/#getting-started ) 时,我在以下位置收到警告: 从“vuelidate
我正在尝试使用 vuelidate 验证输入字段。如果以下任一正则表达式为真,我需要它返回有效。 const val1 = helpers.regex('val1', /^\D*7(\D*\d){12
我使用 Bootstrap-Vue 构建了以下表单,其中应用了一些 Vuelidation 代码。 Ple
我正在使用 Vue.js,而且我是新手。我目前正在验证。我曾使用 vuelidate 作为我的验证库。我已经成功地完成了表单验证,但是当我必须检查复选框的验证时出现了问题。 如何检查复选框的验证?另外
我有一个表单,可以根据存储在 VUEX 存储中的参数 action 应用不同的验证。我试试这个: data: function() { const validations = { s
我在 vue 应用程序中有一个表单。 vue2-persian-datepicker 包用于波斯日期字段。我正在尝试使用 vuelidate 验证字段,我的问题是 pdatepicker 组件(来自
如果启用了功能(如果您选择了复选框),我试图让一个字段成为必填字段。但是该验证不会通过单击选择/取消选择复选框来触发 Enable Vue.js validations: {
我在 vuelidate 中遇到导致无限循环的问题。这是我的项目的简要过程。我有一个 datatable,我使用 Firebase OnSnapShot 函数对表格进行分页。该表具有操作列,单击时将显
假设我有一个包含如下数据的 vue 组件: data: () => ({ form: { old_password: { data: '', t
我需要根据元素本身的值来验证列表的元素。 我是否可以或应该为每个产品创建验证? new Vue({ el: "#app", data: { text: '', sons:
我将 VueJS2 与 vuelidate 一起使用图书馆。我可以根据验证对象验证字段。验证将在计算的时间内执行。但是我的验证对象是固定的,而不是动态的。我有一些字段会根据选择隐藏。 import {
如何使用 Vuelidate 对父组件内的嵌套组件进行验证?如果子组件中的输入有效或无效,我想更改 parentForm.$invalid。 家长: validations: {
我是一名优秀的程序员,十分优秀!