一段时间以来,我一直在苦苦挣扎和研究如何控制v-autocomplete,但仍然找不到一个好的答案。我正在尝试使用v-autocomplete进行多个城市选择,并试图限制用户最多选择5个城市。我希望这会阻止用户添加更多选择。当前,计数器仅变为红色,但仍允许用户在通过时添加更多内容。5.是否有任何道具或功能可以让我执行此操作?我在某处遇到了描述,它说我必须使用其他验证API,但我在任何地方都找不到任何示例。
此外,其中一个选项是“排名前5位的城市”。我想将其视为已选择的5个城市。有没有办法将此选项的计数增加到5?并且,当剩余计数器小于5时,禁用前5个选项吗?谢谢
<v-autocomplete
label="Cities"
v-model="selectedValue"
:items="itemList"
item-text="name"
item-value="id"
hide-no-data
hide-selected
counter="5"
multiple
chips
deletable-chips
></v-autocomplete>
我的示例代码在这里。 https://codepen.io/OpPen/pen/LYpJppa
非常感谢您。
答案 0 :(得分:0)
您可以为自动完成项添加计算属性,并且如果选择的长度超过4(5),则只需将选择的项返回到自动完成项即可,因此用户只能选择其他内容。仅当他删除至少一个城市时,选择才有资格返回。
答案 1 :(得分:0)
我设法使其大部分正常工作。
如果有更好的方法可以执行此操作,或者Vuetify开箱即用,请告诉我。
我无法解决的一件事是,我无法设置计数器值来反映来自computedCounterValue的自定义计数。我希望在选择前5个时计数器显示5/5。我尝试使用道具“ counter-value”,但没有生效。
<v-autocomplete
label="Cities"
v-model="selectedValues"
:items="itemList"
item-text="name"
item-value="id"
hide-no-data
hide-selected
:counter="maxSelected"
:counter-value="computedCounterValue"
:menu-props="menuProps"
multiple
chips
deletable-chips
@input="adjustOptions"
></v-autocomplete>
</v-container>
答案 2 :(得分:0)
我只在@change 处于活动状态时添加一个函数,并在函数内部检查模型大小。例如,我删除了模型的最后一个值。所以用户不能选择其他选项。
<v-select
v-model="currentCategories"
:items="categories"
item-text="name"
item-value="id"
chips
placeholder="Select category"
multiple
outlined
dense
@blur="updateGifts"
@change="limiteCategory"
></v-select>
limiteCategory() {
if (this.currentCategory.length > 5) this.currentCategory.pop();
},
答案 3 :(得分:0)
我遇到了类似的问题,但我通过变通方法解决了这个问题。我最终使表单无效并显示一条消息,而不是在阈值之后阻止用户输入。
<v-autocomplete
...
:counter="maxNumberOfChoices"
:rules="validationRules"
>
computed: {
validationRules () {
return this.maxNumberOfChoices ? [this.validateMaxNumberOfChoices] : []
}
},
methods: {
validateMaxNumberOfChoices (selectedChoices) {
return selectedChoices.length <= this.maxNumberOfChoices || `Choose ${this.maxNumberOfChoices} at most.`
},
}