uniapp问卷调查(单选)

前言

该代码片段只支持问卷调查的单选功能

使用组件库

配置 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 (uviewui.com)

代码

<template>  
  <view>  
    <view v-for="(item, index) in radiolist1" :key="index">  
      <view>{{ item.title }}</view>  
      <u-radio-group v-model="selectedValues[index]" placement="column">  
        <u-radio  
          v-for="(aitem, aindex) in item.option"  
          :key="aindex"  
          :label="aitem.value"  
          :name="aitem.name"  
        ></u-radio>  
      </u-radio-group>  
    </view>  
    <view>  
      <button @click="onSumbit">点击获取到这个值</button>  
    </view>  
  </view>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      radiolist1: [  
        {  
		  id:1,
          title: '这是第一题',  
          option: [  
            { name: '选项一', value: '选项一' },  
            { name: '选项二', value: '选项二' },  
            { name: '选项三', value: '选项三' },  
          ],  
        },  
        {  
		  id:2,
          title: '这是第二题',  
          option: [  
            { name: '选项一', value: '选项一' },  
            { name: '选项二', value: '选项二' },  
            { name: '选项三', value: '选项三' },  
          ],  
        },  
      ],  
      selectedValues: [], // 初始化一个空数组来存储每个radio-group的选中状态  
    };  
  },  
  created() {  
    // 在组件创建时,初始化selectedValues数组的长度与radiolist1相同,并将每个元素设置为空字符串  
    this.selectedValues = this.radiolist1.map(() => '');  
  },  
  methods: {  
    onSumbit() {  
      console.log(this.selectedValues, 'this.selectedValues'); // 输出每个radio-group的选中状态  
    },  
  },  
};  
</script>

效果图

结束语

如果需要多选和填空,可以根据,类型判断是填空还是多选,选择不同的组件来渲染即可!

有什么不足的地方,请大家多多指教!点个赞啦!

以下是一个简单的可编辑调查问卷的示例代码,基于uniAPP框架: ```html <template> <div> <div v-for="(question, index) in questions" :key="index"> <div>{{ question.label }}</div> <div v-if="question.type === 'text'"> <input type="text" v-model="question.answer"> </div> <div v-else-if="question.type === 'radio'"> <div v-for="(option, optionIndex) in question.options" :key="optionIndex"> <input type="radio" :value="option" v-model="question.answer"> {{ option }} </div> </div> <div v-else-if="question.type === 'checkbox'"> <div v-for="(option, optionIndex) in question.options" :key="optionIndex"> <input type="checkbox" :value="option" v-model="question.answer"> {{ option }} </div> </div> <br> </div> <button @click="addQuestion">添加问题</button> <button @click="submitAnswers">提交</button> </div> </template> <script> export default { data() { return { questions: [ { label: "你的姓名", type: "text", answer: "" }, { label: "你的性别", type: "radio", options: ["男", "女"], answer: "" }, { label: "你的爱好", type: "checkbox", options: ["篮球", "足球", "游泳", "跑步"], answer: [] } ] } }, methods: { addQuestion() { this.questions.push({ label: "", type: "text", answer: "" }) }, submitAnswers() { const answers = this.questions.map(question => { return { label: question.label, answer: question.answer } }) console.log(answers) } } } </script> ``` 这个示例中,我们创建了一个`questions`数组来存储所有的问题,每个问题包括问题名称、问题类型(文本、单选多选)、选项(如果是单选多选类型)和答案。我们使用`v-for`指令来循环显示所有的问题,并根据问题类型显示不同的输入框。我们还添加了两个按钮来添加新问题和提交答案。当点击“提交”按钮时,我们将所有的答案存储在一个新的数组中,并在控制台中输出。 这只是一个简单的示例代码,你可以根据自己的需求进行更改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦逼的猿宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值