当前位置: 首页 > news >正文

单选多选提交问卷,代码示例

element中

需要对接口返回的数据进行分析。多选问题使用checkbox,单选题使用radio。

多选时可以绑定min/max来控制选择的个数

        <div class="" v-if="item2.allowMultipleVote == 1"><div class="title_radio">多选 [最少选择<span>{{ item2.leastSelectNumber }}</span>项,最多选择<span>{{ item2.maxSelectNumber }}</span>项]</div><div class="choose_card"><el-checkbox-groupv-model="selectedCheckboxItems":min="Number(item2.leastSelectNumber)":max="Number(item2.maxSelectNumber)"><label v-for="(item3, index3) in item2.options" :key="index3"><el-checkbox:label="item3.id":value="item3.id"@change="handleCheckboxChange(item2.itemId)">{{ item3.dataOption }}</el-checkbox></label></el-checkbox-group></div></div><div class="" v-else><div class="title_radio">单选</div><div class="choose_card"><el-radio-group v-model="selectedRadioItems"><label v-for="(item3, index3) in item2.options" :key="index3"><el-radio:label="item3.id":value="item3.id"@change="handleRadioChange(item2.itemId)">{{ item3.dataOption }}</el-radio></label></el-radio-group></div></div>

怎么收集选中的数据集合

因为是设计多选、单选、多个问题。所以要使用多维数组传给后端。

分别给多选和单选绑定方法,收集选中的值。

item是选中题目的id,itemOptionIds是题目的选项id,多选时itemOptionIds要穿数组。所以多选题v-model绑定的值是数组。

    // 单选按钮的操作handleRadioChange(value) {let newObj = {itemId: value,itemOptionIds: this.selectedRadioItems,};// 判断是否已经选择过当前选项let index = this.sumitInfoid.findIndex((item) => item.itemId === newObj.itemId);if (index !== -1) {this.sumitInfoid[index] = newObj;} else {this.sumitInfoid.push(newObj);}// console.log('单选按钮', this.sumitInfoid);},// 多选按钮的操作handleCheckboxChange(value) {console.log(value, this.selectedCheckboxItems, 'this.selectedCheckboxItems');let newObj = {itemId: value,itemOptionIds: this.selectedCheckboxItems,};let index = this.sumitInfoid.findIndex((item) => item.itemId === newObj.itemId);if (index !== -1) {this.sumitInfoid[index] = newObj;} else {this.sumitInfoid.push(newObj);}console.log('多选按钮', this.sumitInfoid);},

data定义的值

      sumitInfoid: [], // 最终要提交的选项数据selectedRadioItems: '', // 单选的选项数据selectedCheckboxItems: [], // 多选的选项数据

 uni中

uni中好像监听不到多选的最大值最小值,需要自己判断。其他地方同element

				<view class="" v-if="item2.allowMultipleVote == 1"><view class="title_radio">多选 [最少选择<text>{{item2.leastSelectNumber}}</text>项,最多选择<text>{{item2.maxSelectNumber}}</text>项]</view><view class="choose_card"><checkbox-group @change="checkboxChange"><label v-for="(item3,index3) in item2.options" :key="index3"><checkbox :value="item2.itemId+'+'+item3.id" :checked="item3.isChecked != 0"style="transform:scale(0.8)" color="#00B893;" /><text>{{item3.dataOption}}</text></label></checkbox-group></view></view><view class="" v-else><view class="title_radio">单选</view><view class="choose_card"><radio-group @change="radioChange"><label v-for="(item3,index3) in item2.options" :key="index3"><!-- 单选按钮 --><radio class="radio_true" :value="item2.itemId+'+'+item3.id" :name="item3.dataOption":checked="index3 === current" color="#00B893" style="transform: scale(0.8);" /><text>{{item3.dataOption}}</text></label></radio-group></view></view>
			// 投票选项更改radioChange: function(evt) {console.log(evt.detail.value);let value = evt.detail.value.split('+');let newObj = {itemId: value[0],itemOptionIds: [value[1]] // 注意这里将itemOptionIds包装在数组中};// 判断是否已经选择过当前选项let index = this.sumitInfoid.findIndex(item => item.itemId === newObj.itemId);console.log('index !== -1', index !== -1); // 输出结果if (index !== -1) {this.sumitInfoid[index] = newObj;} else {this.sumitInfoid.push(newObj);}// console.log('输出结果单选sumitInfoid', this.sumitInfoid); // 输出结果},// 投票选项更改checkboxChange: function(e) {let newObj = {itemId: '',itemOptionIds: [] // 注意这里将itemOptionIds包装在数组中};if (e.detail.value.length > 0) {let firstValue = e.detail.value[0];let parts = firstValue.split('+');newObj.itemId = parts[0]; // 获取id部分    // 遍历所有值并提取value部分  e.detail.value.forEach(value => {let parts = value.split('+');if (parts.length > 1) { // 确保有id和value两部分// 判断是否多选了let foundItem = this.voteItemList.find(item => item.itemId === newObj.itemId)let maxSelectNumber = foundItem.maxSelectNumber;if (newObj.itemOptionIds.length >= maxSelectNumber) {uni.showToast({title: '最多只能选择' + maxSelectNumber + '项',icon: 'none'})for (var i = 0, lenI = foundItem.options.length; i < lenI; ++i) {const item = foundItem.options[i];if (item.id == parts[1]) {this.$set(item, 'isChecked', 1)setTimeout(() => {this.$set(item, 'isChecked', 0)}, 500)}}} else {newObj.itemOptionIds.push(parts[1]); // 将value部分添加到values数组中  }}});}// 判断是否已经选择过当前选项let index = this.sumitInfoid.findIndex(item => item.itemId === newObj.itemId);if (index !== -1) {this.sumitInfoid[index] = newObj;} else {this.sumitInfoid.push(newObj);}// }// }// console.log('输出结果多选sumitInfoid', this.sumitInfoid); // 输出结果},

 页面展示

相关文章:

单选多选提交问卷,代码示例

&#xff45;&#xff4c;&#xff45;&#xff4d;&#xff45;&#xff4e;&#xff54;中 需要对接口返回的数据进行分析。多选问题使用checkbox&#xff0c;单选题使用radio。 多选时可以绑定&#xff4d;&#xff49;&#xff4e;&#xff0f;&#xff4d;&#xff41;&am…...

mars3d加载wms服务或者wmts服务注意事项

1.wms只支持4326、3857、4490的标准切片&#xff0c;其他坐标系不支持 Mars3D三维可视化平台 | 火星科技 2.wmts同理&#xff0c;Mars3D三维可视化平台 | 火星科技 3.对应级别tilematrix找到的瓦片tilerow&tilecol这两个参数使用常见报错无效参考&#xff1a; 【Mars3d】…...

【机器学习】机器学习与自然语言处理的融合应用与性能优化新探索

引言 自然语言处理&#xff08;NLP&#xff09;是计算机科学中的一个重要领域&#xff0c;旨在通过计算机对人类语言进行理解、生成和分析。随着深度学习和大数据技术的发展&#xff0c;机器学习在自然语言处理中的应用越来越广泛&#xff0c;从文本分类、情感分析到机器翻译和…...

ubuntu优化

rootlocalhost:~# grep -E "^(PermitRootLogin|GSSAPIAuthentication|UseDNS)" /etc/ssh/sshd_config PermitRootLogin yes GSSAPIAuthentication no UseDNS norootlocalhost:~# systemctl restart sshd#此时就可以设置root密码了rootlocalhost:~# passwd New passw…...

使用 HBuilder X 进行 uniapp 小程序开发遇到的问题合集

文章目录 背景介绍问题集锦1. 在 HBuilderX 点击浏览器运行时&#xff0c;报 uni-app vue3编译器下载失败 安装错误2.在 HBuilderX 点击微信小程序运行时&#xff0c;报 微信开发者工具打开项目失败&#xff0c;请参阅启动日志错误 背景介绍 HBuilder X 版本&#xff1a;HBui…...

Python爬虫获取视频

验证电脑是否安装python 1.winr输入cmd 2.在黑窗口输入 python.exe 3.不是命令不存在就说明python环境安装完成 抓取快手视频 1.在phcharm应用中新建一个项目 3.新建一个python文件 4.选择python文件,随便起一个名字后按回车 5.安装requests pip install requests 6.寻找需要的…...

Python自动化,实现自动登录并爬取商品数据,实现数据可视化

关于如何使用Python自动化登录天 猫并爬取商品数据的指南&#xff0c;我们需要明确这是一个涉及多个步骤的复杂过程&#xff0c;且需要考虑到天猫的反爬虫策略。以下是一个简化的步骤指南&#xff1a; 步骤一&#xff1a;准备工作 环境准备&#xff1a;确保你的Python环境已经…...

计算机网络——数据链路层(以太网)

目录 局域网的数据链路层 局域网可按照网络拓扑分类 局域网与共享信道 以太网的两个主要标准 适配器与mac地址 适配器的组成与运作 MAC地址 MAC地址的详细介绍 局域网的mac地址格式 mac地址的发送顺序 单播、多播&#xff0c;广播mac地址 mac帧 如何取用…...

Java ORM框架FastMybatis踩坑

Java ORM框架FastmyBatis踩坑 问题&#xff1a;使用了FastmyBatis的saveOrUpdate方法&#xff0c;明明设置了主键的值且表中存在&#xff0c;但是依然执行insert操作。导致Duplicate PK。 原因&#xff1a;使用了其他第三方包的注解指定表的主键&#xff0c;没有按照FastmyBat…...

AI是在帮助开发者还是取代他们?

AI是在帮助开发者还是取代他们&#xff1f; 在软件开发领域&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;正在改变开发者的工作方式。无论是代码生成、错误检测还是自动化测试&#xff0c;AI工具正在成为开发者的得力助手。然而&#xff0c;这也引发了对开发者职业…...

C. Theofanis‘ Nightmare

原题链接 : Problem - 1903C - Codeforces 思路 &#xff1a; 创建一个后缀和数组 &#xff0c; 然后把所有后缀和>0的加入到答案中&#xff0c;注意,整个数组的和一定要加入答案中 ; 代码 java : package sf;import java.util.Scanner; import java.util.* ;public …...

加密货币大利好!9月降息概率突破70%!美国可能大幅降息或多次降息?

根据最新消息&#xff0c;美国9月降息的概率已经突破70%&#xff0c;这对加密货币市场来说是个利好消息。与此同时&#xff0c;美国经济表现疲软&#xff0c;可能会陷入衰退&#xff0c;联邦储备系统(Fed)接下来会不会果断采取大幅降息措施备受关注。 美国劳工统计局7月5日公布…...

Dns被莫名篡改的逆向分析定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…...

SpringBoot中整合ONLYOFFICE在线编辑

SpringBoot整合OnlyOffice SpringBoot整合OnlyOffice实现在线编辑1. 搭建私有的OnlyOffice的服务2. SpringBoot进行交互2.1 环境2.2 我们的流程2.3 接口规划2.3.1 获取编辑器配置的接口2.3.2 文件下载地址2.3.3 文件下载地址 3. 总结4. 注意4.1 你的项目的地址一定一定要和only…...

Python打字练习

代码解析 导入模块和定义单词列表 import tkinter as tk import randomsample_words ["apple", "banana", "cherry", "date", "fig", "grape", "kiwi", "lemon", "mango", &quo…...

Pytorch添加自定义算子之(10)-mmdeploy编译流程

整体参考 一、mmcv的编译安装 见上一篇 opencv的安装 $env:OpenCV_DIR = "D:\git_clone\opencv\build" # 我这里下载解压之后的地址 $env:path = "$env:OpenCV_DIR\x64\vc15\bin;" + $env:path $env:path = "D:\git_clone\opencv\build\OpenCVConf…...

大数据面试题之Flink(4)

Flink广播流 Flink实时topN 在实习中一般都怎么用Flink Savepoint知道是什么吗 为什么用Flink不用别的微批考虑过吗 解释一下啥叫背压 Flink分布式快照 Flink SQL解析过程 Flink on YARN模式 Flink如何保证数据不丢失 Flink广播流 Apache Flink 中的广播流&…...

C#实战|账号管理系统:通用登录窗体的实现。

哈喽,你好啊,我是雷工! 本节记录登录窗体的实现方法,比较有通用性,所有的项目登录窗体实现基本都是这个实现思路。 一通百通,以下为学习笔记。 01 登录窗体的逻辑 用户在登录窗输入账号和密码,如果输入账号和密码信息正确,点击【登录】按钮,则跳转显示主窗体,同时在固…...

php简单商城小程序系统源码

&#x1f6cd;️【简单商城小程序】&#x1f6cd;️ &#x1f680;一键开启&#xff0c;商城搭建新体验&#x1f680; 你还在为繁琐的商城搭建流程头疼吗&#xff1f;现在&#xff0c;有了简单商城系统小程序&#xff0c;一切变得轻松又快捷&#xff01;无需复杂的编程知识&a…...

NativeMemoryTracking查看java内存信息

默认该功能是禁用的&#xff0c;因为会损失5-10%的性能 开启命令 -XX:NativeMemoryTrackingdetail 打印命令 jcmd 45064 VM.native_memory summary scaleMB > NativeMemoryTracking.log 具体的日志信息 ➜ ~ ➜ ~ jcmd 45064 VM.native_memory summary scaleMB 45064…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...