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 相关文章推荐
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 Javascript
javascript实现yield的方法
Nov 06 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
JS+CSS实现简易实用的滑动门菜单效果
Sep 18 Javascript
Boostrap入门准备之border box
May 09 Javascript
基于jQuery ligerUI实现分页样式
Sep 18 Javascript
Angular路由简单学习
Dec 26 Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 Javascript
详谈js原型继承的一些问题
Sep 06 Javascript
vue中v-model动态生成的实例详解
Oct 27 Javascript
JS运算符优先级与表达式示例详解
Sep 04 Javascript
梳理一下vue中的生命周期
Dec 30 Vue.js
关于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
DOMXML函数笔记
2006/10/09 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
php使用curl访问https示例分享
2014/01/17 PHP
js 获取radio按钮值的实例
2013/08/17 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
Ajax基础知识详解
2017/02/17 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python使用opencv进行人脸识别
2017/04/07 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python变量命名的7条建议
2019/07/04 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
建筑工程技术应届生求职信
2013/11/17 职场文书
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
单位办理社保介绍信
2014/01/10 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
信息合作协议书
2014/10/09 职场文书
出差报告格式模板
2014/11/06 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
队列队形口号
2015/12/25 职场文书