layui问卷调查插件 问题列表插件 新增列表 选项插件

效果图

先给各位大佬呈上效果图:
在这里插入图片描述

大致描述

使用到的工具有 JQ、Layui样式
主要的功能是:
1、新增问题、删除问题;
2、新增选项、删除选项;
3、保存时获取列表内容;
4、无列表的时候显示新增按钮

主要代码
// html部分
<div id="question-list">
            <div class="line-btn add-first-item" style="display: none">
                <button type="button" data-method="addFirstItem" class="layui-btn layui-btn-primary my-btn-primary">新增问题</button>
            </div>
            <div class="issue-list">
                <div class="selection-list">
                    <div class="selection-list-item">
                        <span class="issue-num">Q、</span>
                        <input type="text" placeholder="请输入题目" class="layui-input issue-input">
                    </div>
                </div>
                <div class="selection-list selection-items">
                    <div class="selection-list-item">
                        <span>A:</span>
                        <input type="text" placeholder="选项" class="layui-input">
                        <button type="button" data-method="delInput" class="layui-btn btn-delete-input">删除</button>
                    </div>
                </div>
                <div class="textCenter line-btn">
                    <button type="button" data-method="deleteItem" class="layui-btn layui-btn-primary my-btn-danger">删除问题</button>
                    <button type="button" data-method="addInput" class="layui-btn layui-btn-primary my-btn-normal">添加选项</button>
                    <button type="button" data-method="addItem" class="layui-btn layui-btn-primary my-btn-primary">此题后新增</button>
                </div>
            </div>
        </div>
//js 部分
layui.use('layer', function(){
        var $ = layui.jquery, layer = layui.layer;
        //新增问题模板
        var newItem =
            '<div class="issue-list">\n' +
            '\t<div class="selection-list">\n' +
            '\t\t<div class="selection-list-item">\n' +
            '\t\t\t<span>Q、</span>\n' +
            '\t\t\t<input type="text" placeholder="请输入题目" class="layui-input issue-input">\n' +
            '\t\t</div>\n' +
            '\t</div>\n' +
            '\t<div id="selection-items" class="selection-list selection-items">\n' +
            '\t\t<div class="selection-list-item">\n' +
            '\t\t\t<span>A:</span>\n' +
            '\t\t\t<input type="text" placeholder="选项" class="layui-input">\n' +
            '\t\t\t<button type="button" data-method="delInput" class="layui-btn btn-delete-input">删除</button>\n' +
            '\t\t</div>\n' +
            '\t</div>\n' +
            '\t<div class="textCenter line-btn">\n' +
            '\t\t<button type="button" data-method="deleteItem" class="layui-btn layui-btn-primary my-btn-danger">删除问题</button>\n' +
            '\t\t<button type="button" data-method="addInput" class="layui-btn layui-btn-primary my-btn-normal">添加选项</button>\n' +
            '\t\t<button type="button" data-method="addItem" class="layui-btn layui-btn-primary my-btn-primary">此题后新增</button>\n' +
            '\t</div>\n' +
            '</div>';
        var active = {
            // 新增选项
            addInput: function (othis) {
                var itemLength = othis.parent().parent().children('.selection-items').children('.selection-list-item').length;
                if(itemLength >=10){
                    layer.msg('选项不得超过10个',{time: 2000});
                    return;
                };
                var letterArr = ['A','B','C','D','E','F','G','H','I','J'];
                var newInput =
                    '<div class="selection-list-item">\n' +
                    '\t<span>'+letterArr[itemLength]+':</span>\n' +
                    '\t<input type="text" placeholder="选项" class="layui-input">\n' +
                    '\t<button type="button" data-method="delInput" class="layui-btn btn-delete-input">删除</button>\n'+
                    '</div>';
                othis.parent().parent().find('.selection-items').append(newInput);
            },
            //删除选项
            delInput: function (othis) {
                othis.parent().remove();
            },
            //新增问题
            addItem: function (othis) {
                // var itemLength = $('#question-list>.issue-list').length+1;
                othis.parent().parent().after(newItem);
            },
            //删除问题
            deleteItem: function (othis) {
                var itemLength = $('#question-list>.issue-list').length;
                if(itemLength<=1){
                    $('.add-first-item')[0].style.display = 'block';
                }
                othis.parent().parent().remove();
            },
            addFirstItem: function () {
                $("#question-list").append(newItem);
                $('.add-first-item')[0].style.display = 'none';
            }
        };
        //动态加载元素用
        $('#question-list').on('click','.layui-btn', function () {
            var othis = $(this), method = othis.data('method');
            active[method].call(this, othis);
        });
    });

详细代码请前往github下载;
下载地址:
https://github.com/taurus888/layui-questionnaire

基于SpringBoot+Vue.js的在线问卷调查系统是一个现代化、响应式的Web应用程序,旨在为用户提供一个简洁、高效的在线问卷填写和数据分析平台。该系统采用了前后端分离的架构设计,前端使用Vue.js框架构建用户界面,后端则使用SpringBoot框架处理业务逻辑和数据存储。 主要功能如下: 问卷管理:管理员可以创建、编辑、删除问卷,设置问卷的标题、描述、问题类型(单选、多选、填空等)以及答案选项。 用户管理:管理员可以查看、编辑、删除用户信息,包括用户名、密码、邮箱等。 数据收集:用户可以在平台上填写问卷,提交后数据将被存储到数据库中。 数据分析:管理员可以查看问卷的数据分析报告,包括各个问题的统计结果、图表展示等。 权限控制:系统支持不同角色的用户登录,如普通用户、管理员等,根据角色分配不同的操作权限。 技术栈: 前端:Vue.js、Element UI、Axios、Vuex、Vue Router 后端:SpringBoot、MyBatis、MySQL、Redis、JWT 开发工具:IntelliJ IDEA、Visual Studio Code、Git、Maven 部署:Docker、Nginx 通过本系统的设计与实现,可以帮助企业、学校等组织快速搭建一个在线问卷调查平台,方便地收集和分析用户数据,为决策提供有力支持。同时,源码和部署说明的提供,也使得开发者可以根据实际需求进行二次开发和定制化部署。
好的,生成调查问卷表单可以通过JavaScript来实现。下面是一个简单的示例代码: HTML: ```html <form id="survey-form"> <label for="name">您的姓名:</label> <input type="text" id="name" name="name"><br> <label for="age">您的年龄:</label> <input type="number" id="age" name="age"><br> <label for="gender">您的性别:</label> <select id="gender" name="gender"> <option value="male">男</option> <option value="female">女</option> </select><br> <label for="feedback">您对本次调查有何建议或意见:</label> <textarea id="feedback" name="feedback"></textarea><br> <button type="submit">提交</button> </form> ``` JavaScript: ```javascript // 获取表单元素 const form = document.getElementById('survey-form'); // 动态生成问题 const questions = [ '您对本次活动的满意度如何?', '您对本次活动的组织和安排是否满意?', '您觉得本次活动有哪些可以改进的地方?' ]; questions.forEach((question, index) => { // 创建标签元素 const label = document.createElement('label'); const input = document.createElement('input'); // 设置元素属性 label.setAttribute('for', `question${index}`); label.innerText = `${index+1}. ${question}`; input.setAttribute('type', 'text'); input.setAttribute('id', `question${index}`); input.setAttribute('name', `question${index}`); // 添加元素到表单中 form.appendChild(label); form.appendChild(input); }); // 提交表单 form.addEventListener('submit', (event) => { event.preventDefault(); // 阻止默认提交行为 const formData = new FormData(form); // 获取表单数据 console.log(formData); // 输出表单数据 }); ``` 这个示例代码可以动态生成多个问题,并且获取用户填写的表单数据。你可以根据需要对表单进行更改和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

【拾光静好 微微一笑】

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

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

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

打赏作者

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

抵扣说明:

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

余额充值