How to Use the Select Tag with Vue

Mar 9, 2021

In HTML, the <select> tag lets you create a dropdown that lets the user select one of several options. The easiest way to tie Vue state to the value of a <select> tag is using v-model. Below is an example:

Your Choice is: {{selected}}
<script src="https://unpkg.com/vue@next"></script>
<div style = "outline-style: solid" id="example">
  <select v-model="selected">
    <option disabled value="">Please Select</option>
    <option>A</option>
    <option>B</option>
    <option>C</option>
  </select>
  <span style="padding-left:5%">Your Choice is: {{selected}}</span>
</div>
<script>
Vue.createApp({
  data() {
    return {
      selected: ''
    };
  }
}).mount('#example');
</script>

Note: On iOS, if the initial value of your v-model does not match any of the options, it will cause the browser to render the <select> tag in a "unselected" state. Any browser running on iOS won't fire a change event for a <select> in an unselected tag, which means the user won't be able to select the first option. Therefore, we recommend using a disabled option with an empty value as the first element.

With v-for

With v-for, you can create an option for every value in an array. Below is an example:

Your Choice is: {{selected}}
<script src="https://unpkg.com/vue@next"></script>
<div style = "outline-style: solid" id="demo">
  <select v-model="selected">
    <option disabled value="">Please Select</option>
    <option v-for="option in options" :value="option">{{option}}</option>
  </select>
  <span style="padding-left:5%">Your Choice is: {{selected}}</span>
</div>
<script>
Vue.createApp({
  data() {
    return {
      selected: '',
      options: [
        'A',
        'B',
        'C'
      ]
    };
  }
}).mount('#demo');
</script>

Vue School has some of our favorite Vue video courses. Their Vue.js Master Class walks you through building a real world application, and does a great job of teaching you how to integrate Vue with Firebase. Check it out!


More Vue Tutorials