You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Vue中给带v-model的select加required类、解决报错及设置默认选中

解决Vue中下拉框required报错与默认值设置问题

我来帮你搞定这两个问题,咱们一步步拆解:

一、修复required=""导致的getAttribute错误

在Vue中直接使用原生的required=""会触发这个错误,因为Vue对表单指令的处理需要用响应式绑定的方式来声明必填规则。你应该根据复选框的选中状态来决定下拉框是否需要必填——毕竟只有用户勾选了某一天,对应的时间选择才需要生效对吧?

修改方案:用:requiredv-bind:required的简写)绑定一个布尔值,关联复选框的selected状态,同时修复循环中重复的idfor属性(否则标签和复选框关联会失效):

<div v-for="(value, index) in day" :key="index" class="checkboxFour"> 
  <input type="checkbox" :id="`need-${index}`" :value="value.val" v-model="value.selected" style="width: 10%!important;"> 
  <label :for="`need-${index}`" style=" width: 30%!important;">{{value.name}}</label> 
  <!-- 绑定required到复选框的选中状态 -->
  <select v-model="value.from" class="select-style" :required="value.selected">
    <option value="08:00">08.00</option> 
    <option value="12:00">12.00</option> 
    <option value="20:00">20.00</option> 
    <option value="23:00">23.00</option> 
  </select> 
  <select v-model="value.to" class="select-style" :required="value.selected">
    <option value="08:00">08.00</option> 
    <option value="12:00">12.00</option> 
    <option value="20:00">20.00</option> 
    <option value="23:00">23.00</option> 
  </select> 
  <br> 
</div>

二、预先选中特定值

要实现默认选中,只需要在你的day数组数据中,给每个对象的fromto字段设置对应的默认值即可——Vue的v-model会自动匹配optionvalue值完成选中。

比如你想默认让所有日期的from选中12:00to选中20:00,你的data应该像这样:

data() {
  return {
    day: [
      { name: '周一', val: 'mon', selected: false, from: '12:00', to: '20:00' },
      { name: '周二', val: 'tue', selected: false, from: '12:00', to: '20:00' },
      // 其他日期对象...
    ]
  }
}

注意:optionvalue是字符串类型,所以你设置的默认值也要是字符串,避免类型不匹配导致无法选中。这样页面加载时下拉框就会自动选中你设置的默认值,用户也可以随时修改。

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

火山引擎 最新活动