欢迎光临,了解微信小程序开发,就上易用通!

微信小程序之MaterialDesign--input组件

发布:2018-01-25 10:03浏览: 来源:网络 作者:tianshu

主要通过input输入事件配合css的transform动态改变实现这种效果。

实际调试过程中,input组件bindinput事件触发后回调的detail对象,在模拟器中含有cursor属性,在真机中(测过安卓,ios没测过)却没有该属性,最后选择detail对象中的value属性的值的长度来同步输入的位数。

bindfocus事件最好不要添加改变css的代码 。 
预览图片:

微信小程序之MaterialDesign--input组件(图1)

微信小程序之MaterialDesign--input组件(图2)

JS:

  1. //index.js
  2. //获取应用实例
  3. var app = getApp()
  4. Page({
  5.   data: {
  6.     v_username_border:'', //用户输入框底部border样式
  7.     v_pwd_border:'',  // 密码输入框底部border样式
  8.     v_float_username:'', // 浮动文字字transform 样式
  9.     v_float_pwd:'',
  10.     num_current_un:0,  // 当前输入的文本位数
  11.     sp_num_current_un:'', // 当前输入文本位数超过限制时的样式
  12.     isPwdError:false  // 提交时 密码输入错误时的文本提示
  13.   },
  14.   onLoad: function () {
  15.     console.log('onLoad')
  16.   },
  17.   // 用户名输入框获取焦点时事件回调
  18.   usernameFocus:function(e){
  19.     var that = this;
  20.     console.log(e.detail)
  21.   },
  22.   // 用户名输入框输入时事件回调
  23.   usernameInput:function(e){
  24.     console.log(e.detail)
  25.      this.setData({
  26.       v_username_border:'border-bottom:1px solid red',
  27.      num_current_un:e.detail.value.length
  28.     })
  29.     if(e.detail.value.length!=0){
  30.        this.setData({
  31.         v_float_username:'color:red ;transform: translateY(-18.5px)',
  32.         sp_num_current_un:'color:lightseagreen;'
  33.       })
  34.       if(e.detail.value.length>20){
  35.         this.setData({
  36.           sp_num_current_un:'color:orangered;'
  37.         })
  38.       }
  39.     }else{
  40.       this.setData({
  41.         v_float_username:'transform: translateY(0px)',
  42.       })
  43.     }
  44.   },
  45.   // // 用户名输入框失去焦点时回调
  46.   usernameBlur:function(e){
  47.     console.log("onBlur")
  48.      this.setData({
  49.       v_username_border:'border-bottom:1px solid grey'
  50.     })
  51.   },
  52.   pwdFocus:function(e){
  53.     console.log('onFocus')
  54.   },
  55.   pwdInput:function(e){
  56.     this.setData({
  57.       v_pwd_border:'border-bottom:1px solid red',
  58.       isPwdError:false
  59.     })
  60.     console.log(e.detail)
  61.     if(e.detail.value.length!=0){
  62.       this.setData({
  63.         v_float_pwd:'color:red ; transform: translateY(-18.5px)',
  64.       })
  65.     }else{
  66.       this.setData({
  67.         v_float_pwd:'transform: translateY(0px)',
  68.       })
  69.     }
  70.   },
  71.    pwdBlur:function(e){
  72.     console.log("onBlur")
  73.      this.setData({
  74.       v_pwd_border:'border-bottom:1px solid grey; '
  75.     })
  76.   },
  77. // 登录按钮模拟表单提交  可用form组件代替
  78.   onLogin:function(e){
  79.     this.setData({
  80.       isPwdError:true
  81.     })
  82.   }
  83. })

源码地址https://github.com/jeffer0323/We-MaterialDesign





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。