微信小程序表单弹窗实例


Posted in Javascript onJuly 19, 2018

开发中有时候会碰到需要一个表单弹窗来处理数据的提交处理,然后这次发布的这套源码就是解决这个问题!

微信小程序表单弹窗实例

WXML代码如何:

<!--button--> 
<view class="btn" bindtap="powerDrawer" data-statu="open">button</view> 
 
<!--mask--> 
<view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view> 
<!--content--> 
<!--使用animation属性指定需要执行的动画--> 
<view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus}}"> 
 
 <!--drawer content--> 
 <view class="drawer_title">弹窗标题</view> 
 <view class="drawer_content"> 
  <view class="top grid"> 
   <label class="title col-0">标题</label> 
   <input class="input_base input_h30 col-1" name="rName" value="可自行定义内容"></input> 
  </view> 
  <view class="top grid"> 
   <label class="title col-0">标题</label> 
   <input class="input_base input_h30 col-1" name="mobile" value="110"></input> 
  </view> 
  <view class="top grid"> 
   <label class="title col-0">标题</label> 
   <input class="input_base input_h30 col-1" name="phone" value="拒绝伸手党"></input> 
  </view> 
  <view class="top grid"> 
   <label class="title col-0">标题</label> 
   <input class="input_base input_h30 col-1" name="Email" value="仅供学习使用"></input> 
  </view> 
  <view class="top bottom grid"> 
   <label class="title col-0">备注</label> 
   <input class="input_base input_h30 col-1" name="bz"></input> 
  </view> 
 </view> 
 <view class="btn_ok" bindtap="powerDrawer" data-statu="close">确定</view> 
</view>

JS代码如何:

Page({ 
 data: { 
  showModalStatus: false 
 }, 
 powerDrawer: function (e) { 
  var currentStatu = e.currentTarget.dataset.statu; 
  this.util(currentStatu) 
 }, 
 util: function(currentStatu){ 
  /* 动画部分 */ 
  // 第1步:创建动画实例  
  var animation = wx.createAnimation({ 
   duration: 200, //动画时长 
   timingFunction: "linear", //线性 
   delay: 0 //0则不延迟 
  }); 
   
  // 第2步:这个动画实例赋给当前的动画实例 
  this.animation = animation; 
 
  // 第3步:执行第一组动画 
  animation.opacity(0).rotateX(-100).step(); 
 
  // 第4步:导出动画对象赋给数据对象储存 
  this.setData({ 
   animationData: animation.export() 
  }) 
   
  // 第5步:设置定时器到指定时候后,执行第二组动画 
  setTimeout(function () { 
   // 执行第二组动画 
   animation.opacity(1).rotateX(0).step(); 
   // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象 
   this.setData({ 
    animationData: animation 
   }) 
    
   //关闭 
   if (currentStatu == "close") { 
    this.setData( 
     { 
      showModalStatus: false 
     } 
    ); 
   } 
  }.bind(this), 200) 
  
  // 显示 
  if (currentStatu == "open") { 
   this.setData( 
    { 
     showModalStatus: true 
    } 
   ); 
  } 
 } 
 
})

WXSS代码如何:

/*button*/ 
.btn { 
 width: 80%; 
 padding: 20rpx 0; 
 border-radius: 10rpx; 
 text-align: center; 
 margin: 40rpx 10%; 
 background: #000; 
 color: #fff; 
} 
 
/*mask*/ 
.drawer_screen { 
 width: 100%; 
 height: 100%; 
 position: fixed; 
 top: 0; 
 left: 0; 
 z-index: 1000; 
 background: #000; 
 opacity: 0.5; 
 overflow: hidden; 
} 
 
/*content*/ 
.drawer_box { 
 width: 650rpx; 
 overflow: hidden; 
 position: fixed; 
 top: 50%; 
 left: 0; 
 z-index: 1001; 
 background: #FAFAFA; 
 margin: -150px 50rpx 0 50rpx; 
 border-radius: 3px; 
} 
 
.drawer_title{ 
 padding:15px; 
 font: 20px "microsoft yahei"; 
 text-align: center; 
} 
.drawer_content { 
 height: 210px; 
 overflow-y: scroll; /*超出父盒子高度可滚动*/ 
} 
 
.btn_ok{ 
 padding: 10px; 
 font: 20px "microsoft yahei"; 
 text-align: center; 
 border-top: 1px solid #E8E8EA; 
 color: #3CC51F; 
} 
 
.top{ 
  padding-top:8px; 
} 
.bottom { 
  padding-bottom:8px; 
} 
.title { 
  height: 30px; 
  line-height: 30px; 
  width: 160rpx; 
  text-align: center; 
  display: inline-block; 
  font: 300 28rpx/30px "microsoft yahei"; 
} 
 
.input_base { 
  border: 2rpx solid #ccc; 
  padding-left: 10rpx; 
  margin-right: 50rpx; 
} 
.input_h30{ 
  height: 30px; 
  line-height: 30px; 
} 
.input_h60{ 
  height: 60px; 
} 
.input_view{ 
  font: 12px "microsoft yahei"; 
  background: #fff; 
  color:#000; 
  line-height: 30px; 
} 
 
input { 
  font: 12px "microsoft yahei"; 
  background: #fff; 
  color:#000 ; 
} 
radio{ 
  margin-right: 20px; 
} 
.grid { display: -webkit-box; display: box; } 
.col-0 {-webkit-box-flex:0;box-flex:0;} 
.col-1 {-webkit-box-flex:1;box-flex:1;} 
.fl { float: left;} 
.fr { float: right;}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 文件传参及处理技巧分析
May 13 Javascript
15款优秀的jQuery导航菜单插件分享
Jul 19 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
JavaScript中实现继承的三种方式和实例
Jan 29 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
Aug 17 Javascript
详解JavaScript中localStorage使用要点
Jan 13 Javascript
用js写的一个路由(简单实例)
Sep 24 Javascript
AngularJS实现星星等级评分功能
Sep 24 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
Dec 12 Javascript
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
vue配置font-awesome5的方法步骤
Jan 27 Javascript
vue用递归组件写树形控件的实例代码
Jul 19 #Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 #Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
Jul 19 #Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 #Javascript
浅谈Vue初学之props的驼峰命名
Jul 19 #Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 #Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 #Javascript
You might like
基于jquery 的一个progressbar widge
2010/10/29 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
js省市区级联查询(插件版&amp;无插件版)
2017/03/21 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Linux CentOS7下安装python3 的方法
2018/01/21 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python轮询机制控制led实例
2020/05/03 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
工厂仓管员岗位职责范本
2014/07/17 职场文书
质检员岗位职责
2015/02/03 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
springboot中的pom文件 project报错问题
2022/01/18 Java/Android