Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

258
Visualizações
Vue JS One Checkbox unchecking another

I am trying to get one checkbox to uncheck another (kinda like radio buttons). I am a little bit of a Vue noob so I am not sure what I am doing wrong. Here are the two inputs.

<label for="'product-'+product.id"
     class="none addon_label"
     :class="{'addon_selected': !selected}"
     >

<input class=""
       type="checkbox" 
       :id="'product-'+product.id"
       :value="false"
       v-model="selected"/>

<div class="v-center">None</div>
</label>

<label :for="'product-'+product.id"
     class="is_flex addon_label"
     :class="{'addon_selected': selected}"
     :data-product-id="product.id">
<div class="checkbox-container">
<input class=""
       type="checkbox"
       :value="true"
       :id="'product-'+product.id"
       v-model="selected"/>
</div>

Recording of the problem

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

You can use radio buttons instead of checkbox:

new Vue({
  el: "#demo",
  data() {
    return {
      product: {id: 1},
      selected: false
    }
  }
})
.addon_selected {
  border: 1px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
  <label for="'product-'+product.id"
       class="none addon_label"
       :class="{'addon_selected': !selected}"
       >
  <input class=""
         type="radio" 
         :id="'product-'+product.id"
         :value="false"
         v-model="selected"/>
  </label>
  <label :for="'product-'+product.id"
       class="is_flex addon_label"
       :class="{'addon_selected': selected}"
       :data-product-id="product.id">
  <input class=""
         type="radio"
         :value="true"
         :id="'product-'+product.id"
         v-model="selected"/>
         
  </label>
</div>

about 4 years ago · Juan Pablo Isaza Relatório

0

Well, I think that using two variables will be a good approach to have this behavior (checkbox like radio buttons).

There are two methods setInitial and setEnd, each one clear the another input, but the checkbox behavior still the same, so you can clear or reset the inputs by clicking the same input twice.

new Vue({
el: "#app",
data: {
  initial: false,
  end: false
},

methods: {
  setInitial: function(){
    this.end = false
  },
  setEnd: function(){
    this.initial = false
  }
}

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <label
    class="none addon_label"
    :class="{'addon_selected': !initial}"
  >Initial</label>
  <input 
    type="checkbox" 
    v-model="initial"
    @click="setInitial"
  />
  ==#==

  <label
    class="is_flex addon_label"
    :class="{'addon_selected': end}"
  >End</label>
  <input
     type="checkbox"
     v-model="end"
     @click="setEnd"
  />
<hr>
Initial {{ initial }} - End {{ end }}
<hr>
  
</div>

Please run the snippet and test this solution

about 4 years ago · Juan Pablo Isaza Relatório

0

If you absolutely need to use checkboxes instead of radio inputs, you can reverse the true-value and false-value props of one input. This way it will mimic the behavior of the radio buttons.

new Vue({
el: "#app",
data: {
  selected: false
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
<label for="first_input"
     >False</label>
<input
       type="checkbox" 
       id="first_input"
       v-model="selected"
       :true-value="false"
       :false-value="null"/>

<label for="second_input"
     >True</label>
<input
       type="checkbox" 
       id="second_input"
       v-model="selected"
       :false-value="null"/>
       
<br/>
       
Input value: {{ selected }}

</div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda