Vue.js动态添加、删除选题的实例代码


Posted in Javascript onSeptember 30, 2016

大家先看看页面效果吧,当当当当```````````````````````

Vue.js动态添加、删除选题的实例代码

图中第二个选题是小颖点击了"新增选题"按钮,然后出来的,当你点击了"删除选项"或"删除选题"按钮,就会删除相应的选项和选题.

html代码

<template>
<div class="main-container">
<div class="form-horizontal">
<template v-for='(subjectIndex,subject) in question'>
<div class="form-group">
<label class="col-sm-1 control-label">选题:</label>
<label class="col-sm-2 control-label red remove-pad" v-if='$index>0' @click='deleteSubjectFun(subjectIndex)'>删除选题</label>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">标题:</label>
<div class="col-sm-2">
<input type="text" class="form-control" placeholder="未填写" v-model='subject.title'>
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">正确答案:</label>
<div class="col-sm-1">
<input type="text" class="form-control answer" placeholder="未填写" readonly="true" v-model='subject.answer'>
</div>
<span class="prompting-message">请在以下选项中,勾选出正确答案</span>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">分值:</label>
<div class="col-sm-1">
<input type="number" min="1" max="100" class="form-control" v-model='subject.score' @keyup='scoreFun(subjectIndex)'>
</div>
</div>
<div class="form-group">
<label class="col-sm-1 control-label">选项:</label>
</div>
<div class="form-group">
<div class="col-sm-3 mg1">
<ul class="upper-latin">
<template v-for='(opdtIndex,opdt) in subject.optionsData'>
<li>
<input type="checkbox" class="checkbox-answer" v-model='subject.answer' value='{{opdt.id}}'>
<div class="options-div">
<input type="text" class="form-control options-input" placeholder="未填写" v-model='opdt.options'>
<label class="control-label blue remove-pad" v-if='opdtIndex==subject.optionsData.length-1' @click='addNewOptionsFun(subjectIndex,opdtIndex)'>新增选项</label>
<label class="control-label red remove-pad" v-if='opdtIndex>0' @click='deleteOptionsFun(subjectIndex,opdtIndex)'>删除选项</label>
</div>
</li>
</template>
</ul>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-4">
<button class="blue boder" @click='addNewSubjectFun(subjectIndex)'>新增选题</button>
</div>
</div>
<div class='split-line'></div>
</template>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-4">
<button class="btn btn-primary" @click='saveQuestionFun'>提交</button>
</div>
</div>
</div>
</div>
</template>

js代码

<script>
export default {
components: {
},
props: {},
methods: {
// 新增选题
addNewSubjectFun: function(index) {
var subjectDataMes = {};
subjectDataMes.id = index+2;
subjectDataMes.title = '';
subjectDataMes.answer =[];
subjectDataMes.score = 10;
subjectDataMes.optionsData = [{
id: 'A',
options: ''
}];
this.question.push(subjectDataMes);
},
// 判断每个题目的分值不能小于零且不能大于一百
scoreFun:function(index){
if(this.question[index].score<0){
this.question[index].score=10;
this.$root.tipStr = '选题"'+this.question[index].title+'"的分值不能小于零';
}else if(this.question[index].score>100){
this.question[index].score=10;
this.$root.tipStr = '选题"'+this.question[index].title+'"的分值不能大于一百';
}
},
// 删除选题
deleteSubjectFun: function(index) {
this.question.splice(index, 1);
},
// 新增选项
addNewOptionsFun: function(subjectIndex, opdtIndex) {
var optionsDataMes = {};
optionsDataMes.id =String.fromCharCode(64 + (opdtIndex+2)); //将id从数字转换成大写字母.
optionsDataMes.options = '';
var subjectDataMes = this.question[subjectIndex].optionsData;
subjectDataMes.push(optionsDataMes);
},
// 删除选项
deleteOptionsFun: function(subjectIndex, opdtIndex) {
var subjectDataMes = this.question[subjectIndex].optionsData;
subjectDataMes.splice(opdtIndex, 1);
},
saveQuestionFun:function(){
this.question;debugger;
}
},
ready: function() {
},
data() {
return {
question: [{
id: 1,
title: '',
answer: [],
score:10,
optionsData: [{
id: 'A',
options: ''
}],
}],
}
}
}
</script>

css代码

<style scoped>
.mg1 {
padding: 8px 0 0 113px;
}
.upper-latin {
list-style-type: upper-latin;
}
input.form-control.options-input {
display: inline-block; /*width: 499.16px;*/
width: 100%;
}
.boder {
border: 1px solid;
background-color: #fff;
border-radius: 4px;
line-height: 34px;
padding: 0 15px;
}
.blue {
color: #2689cd;
text-align: center;
}
label.red {
color: #c9302c;
}
label.remove-pad {
/*padding: 10px 20px 10px 15px;*/
line-height: 34px;
text-align: left;
}
.split-line {
height: 10px;
border-top: 2px dashed #E7E8EC;
width: 900px;
}
.prompting-message {
line-height: 34px;
}
.options-div {
margin-left: 26px;
margin-top: -25px;
padding-bottom: 25px;
}
</style>

以上所述是小编给大家介绍的Vue.js动态添加、删除选题的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
Sep 01 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
js使用removeChild方法动态删除div元素
Aug 01 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
js实现数组冒泡排序、快速排序原理
Mar 08 Javascript
jquery实现点击弹出对话框
Feb 08 jQuery
微信小程序实现限制用户转发功能的实例代码
Feb 22 Javascript
Js实现复选框的全选、全不选反选功能代码实例
Feb 28 Javascript
详解ES6中class的实现原理
Oct 03 Javascript
关于List.ToArray()方法的效率测试
Sep 30 #Javascript
微信小程序 window_x64环境搭建
Sep 30 #Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 #Javascript
JavaScript 对象详细整理总结
Sep 29 #Javascript
JS实现拖动滚动条评分的效果代码分享
Sep 29 #Javascript
Angular 中 select指令用法详解
Sep 29 #Javascript
jQuery视差滚动效果网页实现方法经验总结
Sep 29 #Javascript
You might like
php项目打包方法
2008/02/18 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
新浪的图片新闻效果
2007/01/13 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
深入理解python对json的操作总结
2017/01/05 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
python面向对象法实现图书管理系统
2019/04/19 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
Java多态性的定义以及类型
2014/09/16 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
广告语设计及教案
2014/03/21 职场文书
锅炉工岗位职责
2015/02/13 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
Linux系统下安装PHP7.3版本
2021/06/26 PHP