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 相关文章推荐
浅析hasOwnProperty方法的应用
Nov 20 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
Feb 26 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
Jun 30 Javascript
详解jquery事件delegate()的使用方法
Jan 25 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
AngularJS基础 ng-cloak 指令简单示例
Aug 01 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
May 13 Javascript
vue实现组件之间传值功能示例
Jul 13 Javascript
Vue 样式绑定的实现方法
Jan 15 Javascript
解决vue项目获取dom元素宽高总是不准确问题
Jul 29 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
简单实用的.net DataTable导出Execl
2013/10/28 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
浅谈Python中的闭包
2015/07/08 Python
python生成二维码的实例详解
2017/10/29 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
浅谈django的render函数的参数问题
2018/10/16 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
《雾凇》教学反思
2014/02/17 职场文书
投资协议书范本
2014/04/21 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
工程部岗位职责范本
2015/04/11 职场文书
redis缓存存储Session原理机制
2021/11/20 Redis
MySql分区类型及创建分区的方法
2022/04/13 MySQL
基于Redission的分布式锁实战
2022/08/14 Redis
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS