如何在vuejs中验证b-form-radio-group中的单选按钮

时间:2019-07-05 06:56:45

标签: vue.js bootstrap-vue

我有一个b-form-radio-group单选按钮,如何验证它们,因为必须选中其中一个?

这是b模态内b-form-radio-group的div

<b-modal id="manageQuantity" title="Manage Quantity" @ok="updateQuantity">
<div class="radio-button">
            <b-form-group
              id="quantityOption"
              label-cols-sm="3"
              label="Option :"
              label-for="input-horizontal"
            >
              <b-form-radio-group
                id="quantityOption"
                class="individual-button"
                buttons
                button-variant="outline-secondary"
                v-model="form.quantityOption"
                :options="quantityOptions"
              ></b-form-radio-group>
            </b-form-group>
            </div>
</b-modal>

当我单击“确定”按钮时,如果我未选择任何单选按钮,则b-modal应该会警告我。

2 个答案:

答案 0 :(得分:1)

您需要添加state属性。您还可以将b-form-invalid-feedback b-form-valid-feedback插槽用于消息:

<b-form-radio-group
    id="quantityOption"
    class="individual-button"
    buttons
    button-variant="outline-secondary"
    v-model="form.quantityOption"
    :options="quantityOptions"
    :state="state"
>
    <b-form-invalid-feedback :state="state">Please select one</b-form-invalid-feedback>
    <b-form-valid-feedback :state="state">Thank you</b-form-valid-feedback>
</b-form-radio-group>



....
data(){
    return{
        form:{
            quantityOption: null            
        }
    }
}
...
computed: {
    state() {
        return Boolean(this.form.quantityOption)    
    }
}
...    

您可以在文档中找到更多信息:https://bootstrap-vue.js.org/docs/components/form-radio/#contextual-state-with-feedback-example

答案 1 :(得分:0)

在您的updateQuantity方法中,您可以检查quantityOption是否已设置。

您也可以实现Andriy的答案,以获得更直观的表示,但是您仍然需要在事件中进行检查以确保它未设置。

<div>
  <b-btn v-b-modal.modal>Open Modal</b-btn>
  <b-modal id="modal" @ok="updateQuantity">
    <b-form-radio-group
    buttons
    button-variant="outline-secondary"
    v-model="form.quantityOption"
    :options="quantityOptions"
    ></b-form-radio-group>
  </b-modal>
</div>



<script>
  data() {
    return {
      form: { quantityOption: null },
      quantityOptions: [ 
        {value: 1, text: '1' },
        {value: 2, text: '2' },
        {value: 3, text: '3' }
      ]
    }
  },
  methods: {
    updateQuantity(event) {
      if(!this.form.quantityOption){
        alert('Please select one of the options first')
        event.preventDefault()
      }
    }
  }
</script>