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 相关文章推荐
学习ExtJS form布局
Oct 08 Javascript
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
Jun 14 Javascript
Jquery:ajax实现翻页无刷新功能代码
Aug 05 Javascript
使用Chrome浏览器调试AngularJS应用的方法
Jun 18 Javascript
jquery实现select下拉框美化特效代码分享
Aug 18 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
Nov 05 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
Jun 07 Javascript
js简单遍历获取对象中的属性值的方法示例
Jun 19 Javascript
vue绑定class的三种方法
Dec 24 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
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
详解js的六大数据类型
2016/12/27 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
光声世纪笔试题目
2012/08/25 面试题
接口的多继承会带来哪些问题
2015/08/17 面试题
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
会员活动策划方案
2014/08/19 职场文书
坎儿井导游词
2015/02/09 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
2016猴年春节问候语
2015/11/11 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
MySQL通过binlog恢复数据
2021/05/27 MySQL
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android