我需要将所选复选框的数量限制为5。 我试过使用:像这里一样禁用:
<ul>
<li v-for="item in providers">
<input type="checkbox"
value="{{item.id}}"
id="{{item.id}}"
v-model="selected_providers"
:disabled="limit_reached"
>
</li>
</ul>
然后:
new Vue({
el: '#app',
computed:{
limit_reached: function(){
if(this.selected_providers.length > 5){
return true;
}
return false;
}
}
})
这种作品,但当它达到5时,所有复选框都被禁用,您无法取消选中您不想要的复选框。
我还试图用1毫秒的超时来拼接数组,这有效,但感觉很烦。 有人可以推荐一下吗?
答案 0 :(得分:6)
基本上,如果输入尚未被选中并且选择了超过4个输入,则只会禁用输入。
我能想到的最干净的方式是:
new Vue({
el: '#app',
data: {
inputs: []
}
})
使用:
<ul>
<li v-for="n in 10">
<label>
<input
type="checkbox"
v-model="inputs"
:value="n"
:disabled="inputs.length > 4 && inputs.indexOf(n) === -1"
number> Item {{ n }} {{ inputs.indexOf(n) }}
</label>
</li>
</ul>