在 vue 组件上提交表单时如何获取值单选按钮?

Posted

技术标签:

【中文标题】在 vue 组件上提交表单时如何获取值单选按钮?【英文标题】:How can I get value radio button when submit form on the vue component? 【发布时间】:2018-08-21 06:41:26 【问题描述】:

我有两个组件

我的第一个组件是这样的:

<template>
    <div>
        ...
            <form-radio id="gender" name="gender" :data="genderData" v-model="gender">Gender</form-radio>
        ...
        <button type="submit" class="btn btn-primary" @click="submit">Submit</button>
    </div>
</template>
<script>
    export default 
        data() 
            return 
                gender: null,
                genderData: [
                    id: 1, label: 'Men', value:1,
                    id: 2, label: 'Women', value:2
                ],
            
        ,
        methods: 
            submit() 
                console.log('submit profile')
                console.log(this.gender)
            
        
    
</script>

在第一个组件上,它会调用表单输入组件

表单输入组件如下:

<template>
    <div class="form-group">
        <label class="col-sm-3 control-label"><slot></slot></label>
        <div class="col-sm-9">
            <label v-for="item in data" class="radio-inline">
                <input type="radio" :name="name" :id="item.id" :value="item.value" :required="isRequired ? true : false" @input="$emit('input', $event.target.value)">
                item.label
            </label>
        </div>
    </div>
</template>
<script>
    export default 
        props: 
            name: String,
            data: Array,
            isRequired:
                type: Boolean,
                default: true
            ,
            pattern: String,
            value: 
                type: [String, Number]
            
        
    
</script>

我使用这样的模式。所以表单输入组件可以在很多组件中使用

但我的问题是:提交按钮时我无法检索值

我尝试这样,但console.log(this.gender) 的结果是null

我希望在输入数据名称和提交表单时,它会得到性别

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

对于单选框和选择,使用@change 而不是@input

<input type="radio" ... @change="$emit('input', $event.target.value)">

【讨论】:

也许你能再次帮助我。看看这个:***.com/questions/49337786/… 你怎么看?你是否可以帮助解决这个问题?因为问题和这个答案有关 哦,嘿嘿,不好意思,我没看。我在打电话时收到了评论,但从来没有真正看一眼。对不起。我现在就去看看。将在那里评论或回答我的看法。【参考方案2】:

你必须在radio中添加一个值attr。如下:

<input type="radio" id="gender" value="male" v-model="gender">

还有剧本

export default 
 data() 
  return
    gender: 'male'
  
 

如果您想使用选项进行选择:

<select v-model="selected">
  <option disabled value="">Select sex</option>
  <option value="male">Male</option>
  <option value="female">Female</option>
 </select>

还有剧本

   export default 
    data() 
     return  
      selected: ''
     
    
   

【讨论】:

以上是关于在 vue 组件上提交表单时如何获取值单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章

自定义单选按钮jqgrid编辑表单

单击提交后如何获取选定的单选按钮以显示特定的隐藏 div?

即使未单击单选按钮,仍会提交表单[重复]

通过单选按钮更改 Jquery 表单提交

vue 表单之通过v-model绑定单选按钮radio

如何定位单选按钮的值[重复]