vuejs2 - 如何检查多个元素是否存在 Vue 中的一个类?
问题描述
我有一个 Vue 应用程序,它是一个复杂的表单,有很多打开和关闭规则,具体取决于所做的选择。我通过在部分中创建组件来做到这一点。在启用提交按钮(在最后一节中)之前,我想检查可以填写的所有内容。我有一个类,当一个元素被填充时我会更新。需要填充是在一些数据被放入字段或组件之前到位的类
<template>
<div>
<div>
<label class="block">
<span :class="[Boolean(loadFormDate) ? 'bg-blue-lighter': 'need-to-fill']"><strong>Date:</strong></span>
<datepicker
placeholder="Select Date"
@selected="commitDate('formDate', $event)"
:value="loadFormDate" />
</label>
</div>
<div class="flex-1">
<label class="block">
<span :class="[Boolean(staffID) ? 'bg-blue-lighter': 'need-to-fill','w-full']"><strong>Staff ID:</strong></span>
<input class="block" placeholder="Staff ID"
@input="commitField('staffID', $event.target.value)"
:value="staffID"
/>
</label>
</div>
</div>
</template>
我想搜索所有元素以查看任何元素中都不存在“需要填充”,如果不存在,则启用提交按钮。
解决方案
我假设您'need-to-fill'
已经正确设置了所需的课程。
创建disabled
确定按钮是否被禁用的变量:
data: () => ({
disabled: true,
}),
并在按钮上设置指示器,并在表单元素上引用ref="form"
:
<form ref="form">
// ...
<button :disabled="disabled">Submit</button>
</form>
注意:它不必是form
,它可以是div
或其他,只要它包含您所有的表单输入。
创建检查表单元素的任何后代是否包含所需类的函数:
const descendantContainsClass = (el, className) => {
let elements = Array.from(el.getElementsByTagName('*'))
let hasClass = false
for(let el of elements) {
if(el.classList.contains(className)) {
hasClass = true
break;
}
}
return hasClass
}
取决于您如何存储表单数据(即您的输入 v-model 值)创建一个观察者(或多个观察者)并在每次数据更改时调用该函数:
watch: {
form: {
deep: true,
handler(v) {
this.$nextTick(() => {
// we pass form element, and desired class to check against
this.disabled = descendantContainsClass(this.$refs.form.$el, 'need-to-fill')
})
}
}
},
根据您的表单,您可能不需要观察者,而只需在handler
例如change
或input
事件之后调用函数(与 in 中的相同)。
推荐阅读
- c++ - 为什么我的 char 函数不能正常工作?
- r - 为什么随机森林中的平均减少基尼系数取决于人口规模?
- c++ - 当布尔值在main(c ++)中为TRUE或FALSE时,如何使布尔函数的结果输出某个语句?
- react-native - 如何在运行时在 react-native-mapbox-gl 中显示/隐藏栅格图层(可见性属性可见/无)
- scala - 无法在 IDE 中访问 Alluxio 文件系统 API
- mongoengine - marshmallow-mongoengine:输出转储值缺少“无”字段
- tensorflow - Keras 中的自定义加权交叉熵损失
- swift - 如何使用数据更新此变量
- c# - 输出到 ServiceBus 的 Azure 函数收到绑定错误
- excel - 根据来自另一个单元格的标准从单元格中移动数据