vue组件表单数据回显验证及提交的实例代码


Posted in Javascript onAugust 30, 2018

最近项目需要到vue开发单页面,所以就研究一下表单数据的回显,验证及提交如何用vue组件的方式实现。

vue组件表单数据回显验证及提交的实例代码

vue组件表单数据回显验证及提交的实例代码

代码如下:

<template>
 <div class="index">
 <!--header-bar></header-bar-->
 <div style="margin:20px;">
 <div class="item">
 <p>住户名称:</p>
 <p>
  <input type="text" value="username" v-model="formStatus.username" placeholder="输入名称">
 </p>
 </div>
 <div class="item">
 <p>住户类型:</p>
 <p>
  <label v-for="(item, index) in zhuhuType">
  <span>{{item.name}}</span>
  <input type="radio" name = "zhuhutype" :value="item.id" :checked="item.isChecked" @click="changeZh(index)" v-model="formStatus.zhuhuType">
  </label>
 </p>
 </div>
 <div class="item">
 <p>设备名称:</p>
 <p>
  <label v-for="(item, index) in shebeiType">
  <span>{{item.name}}</span>
  <input type="checkbox" :value="item.id" :checked="item.isChecked" @click="changeSb(index)" v-model="formStatus.shebeiType">
  </label>
 </p>
 </div>
 <div class="item">
 <p>住户大小:</p>
 <p>
  <select v-model="formStatus.zhuhudaxiao">
  <option value="0">请选择</option>
  <option v-for="option in zhuhudaxiao" v-model="zhuhudaxiao" :id = "option.id" :value="option.value" >{{option.name}}</option>
  </select>
 </p>
 </div>
 <div class="item">
 <p>住户留言:</p>
 <p>
  <textarea value="userword" v-model="formStatus.userword"></textarea>
 </p>
 </div>

 </div>
 <p style="margin:20px 0;"><button @click="save">点击保存</button></p>
 </div>
</template>
<script>
 import Vue from 'vue'
 import axios from 'axios';
 import ElementUI from 'element-ui'
 import URL from '../utils/Tools/URL.js'
 import 'element-ui/lib/theme-chalk/index.css'
 Vue.use(ElementUI)
 import headerBar from '../modules/headerBar.vue';
 export default {
 name: 'index',
 data (){
 return {
 zhuhuType: [],
 shebeiType: [],
 zhuhudaxiao: [],
 //绑定改变后的表单值用于提交
 formStatus: {
  username: "",
  zhuhuType: 43,
  shebeiType: [52, 23],
  zhuhudaxiao: "",
  userword: ""
 }
 }
 },
 components: { headerBar },
 methods: {
 getPage (currentPage){
 console.log(currentPage);
 // this.$http.get("http://192.168.1.200/test.php").then(res=>{
 // console.log(res.data);
 // });
 },
 handleEdit(index, row) {
 console.log(index, row);
 },
 handleDelete(index, row) {
 console.log(index, row);
 },
 save(){
 if(this.formStatus.username == ""){
  alert("输入名称");
  return false;
 }
 console.log(typeof(this.formStatus.zhuhuType));
 if(typeof(parseInt(this.formStatus.zhuhuType)) != "number"){
  alert("输入住户类型");
  return false;
 }
 if(this.formStatus.shebeiType.length == 0 ){
  alert("输入设备名称");
  return false;
 }
 if(this.formStatus.zhuhudaxiao == 0){
  alert("选择住户大小");
  return false;
 }
 if(this.formStatus.userword == ""){
  alert("输入用户留言");
  return false;
 }

 console.log(this.formStatus);
 console.log("####用户名称####");
 console.log(this.formStatus.username);

 console.log("####住户类型####");
 console.log(this.zhuhuType);

 console.log("####设备名称####");
 console.log(this.shebeiType);

 console.log("####住户大小####");
 console.log(this.userDxselected);

 console.log("####用户留言####");
 console.log(this.userword);
 },
 //住户类型改变数据
 changeZh(index){
 this.zhuhuType.forEach(function(value, index){
  value.isChecked = false;
 });
 this.zhuhuType[index].isChecked = true;
 },
 //设备选择改变数据
 changeSb(index){
 console.log(index);
 this.shebeiType[index].isChecked = !this.shebeiType[index].isChecked;
 }
 },
 created () {
 console.log("############");
 //用户名称
 this.formStatus.username = "用户名称返回的内容";

 //循环住户类型
 this.zhuhuType = [{
 name: '小型住户',
 id: '12',
 isChecked: false
 },{
 name: '中型住户',
 id: '43',
 isChecked: false
 },{
 name: '大型住户',
 id: '72',
 isChecked: true
 },{
 name: '超大型住户',
 name: '设备6',
 id: '25',
 isChecked: false
 }];

 //循环设备名称
 this.shebeiType = [{
 name: '设备1',
 id: '22',
 isChecked: true
 },{
 name: '设备2',
 id: '23',
 isChecked: false
 },{
 name: '设备3',
 id: '52',
 isChecked: true
 },{
 name: '设备6',
 id: '65',
 isChecked: false
 }];

 //住户大小
 this.zhuhudaxiao = [{
 name: "100平米",
 id: 1,
 value: 1
 },{
 name: "80平米",
 id: 2,
 value: 2
 },{
 name: "70平米",
 id: 3,
 value: 3
 }];

 //住户大小
 this.formStatus.zhuhudaxiao = 2;
 //用户名称
 this.formStatus.userword = "用户留言返回的内容";
 // axios.get("/test.php").then(res=>{
 // this.table = this.table.concat(res.data.data);

 // console.log(res.data);
 // });
 }
 }
</script>
<style>
 select{height:40px;width:100px;}
 .el-button--mini, .el-button--mini.is-round{}
 *{margin:0;padding:0;font-family:"微软雅黑";}
 button{height:40px;width:100px;margin-left:20px;}
 .item p{padding:10px 0;}
 .table, .page{
 width:900px;
 height:auto;
 margin:20px auto;
 }
 label{
 padding:10px 20px;
 margin:10px;
 border:1px solid #eee;
 }
 body{padding-top:80px;}
 .header{
 position:fixed;
 top:0;
 width:100%;
 background:#eee;
 }
 .header ul{
 height:80px;
 width:1000px;
 }
 .header ul li{
 float:left;
 width:200px;
 font-size:14px;
 line-height:80px;
 text-align:Center;
 }
 .header ul li a{
 display:block;
 }

</style>
Javascript 相关文章推荐
javascript 动态数据下的锚点错位问题解决方法
Dec 24 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 Javascript
一个php+js实时显示时间问题
Oct 12 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
js中int和string数据类型互相转化实例
Jan 16 Javascript
vue实现循环滚动列表
Jun 30 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 Javascript
js实现滚动条自动滚动
Dec 13 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 #Javascript
使用Node搭建reactSSR服务端渲染架构
Aug 30 #Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 #Javascript
JS实现的input选择图片本地预览功能示例
Aug 29 #Javascript
简述vue状态管理模式之vuex
Aug 29 #Javascript
jQuery实现的简单手风琴效果示例
Aug 29 #jQuery
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 #Javascript
You might like
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
html5唤起app的方法
2017/11/30 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
武汉高蓝德国际.net机试
2016/06/24 面试题
代码中finally中的代码会不会执行
2012/02/06 面试题
公司领导推荐信
2013/11/12 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
中秋寄语大全
2014/04/11 职场文书
同志主要表现材料
2014/08/21 职场文书
机关作风建设自查报告
2014/10/22 职场文书
大学生党性分析材料
2014/12/19 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
Pytest中conftest.py的用法
2021/06/27 Python