You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中select默认选中禁用选项问题:非null值时属性失效

解决Vue Select组件占位符与同值选项冲突问题

问题核心是两个选项的value均为null,Vue的v-model匹配时会优先选中第一个匹配项,导致点击第二个null选项时自动切换到禁用的占位符。要实现占位符默认选中且不可选,同时保留value: null的正常选项,按以下步骤修改:

1. 给占位符设置唯一区分值

将占位符选项的value从null改为唯一值(比如空字符串''),彻底和其他选项的value区分开:

<option :value="''" disabled class="uk-text-muted">Selectează specialitatea</option>

2. 初始化v-model绑定值为占位符的value

在Vue实例或组件的初始化逻辑中,把modalIU.inpIdSpecialitate设为占位符的value(即''),确保页面加载时默认选中占位符:

// 示例:在组件data或初始化方法中设置
modalIU: {
  inpIdSpecialitate: ''
}

3. 完整修改后的代码

<label>Selectează specialitatea</label>
<select v-model="modalIU.inpIdSpecialitate">
     <option :value="''" disabled class="uk-text-muted">Selectează specialitatea</option>
     <option :value='null'>Fără legătură specialitate</option>
     <option 
       v-for="item in allSectiiSpecialitati.filter(el => el.idSpecialitate !== null).sort((a, b) => (a.denumireSpecialitate > b.denumireSpecialitate) ? 1 : -1)"
       :value="item.idSpecialitate"
     >{{ item.denumireSpecialitate }}</option>
</select>

注意:循环生成的选项要绑定value为item.idSpecialitate,否则选项默认value是文本内容,可能导致选中逻辑异常。

逻辑说明

  • 占位符的value是唯一的空字符串,和其他选项的null及正常ID完全不重复,v-model匹配时不会混淆
  • 初始化v-model值为空字符串,页面加载时自动选中占位符,且因为disabled属性,用户无法手动选中它
  • 点击第二个value: null的选项时,v-model会被设为null,此时匹配的是第二个选项,不会跳转到占位符

内容的提问来源于stack exchange,提问作者feng0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 07:45:32