微信小程序中修改input框的密码隐藏与看见无效解决方法

这是个新手问题,在之前开始写小程序项目时遇到,特此记录给有需要的人
首先,代码

<view class="pswV">
        <image class="icon-user" src="../icon/psw.png"></image>
        <image class="icon-seepsw" src="{{seePswImg}}" bindtap="isSeePsw"></image>
        <input id="2" class="inputBox pswBox" type="{{passwordType}}" value="{{passWord}}" bindinput="inputPassword" bindfocus="focusPassword"
        bindblur="blurpassword" placeholder="{{pswPlacholder}}" maxlength="16" />
    </view>

我将输入框和图标放在同一个view里,使用微信中的data数据绑定了输入框的数据类型,然后通过css设置其相对位置,效果如图(使用absolute属性,这里代码乱就不贴了,比较简单):
看箭头处是我需要添加的隐藏展示密码图标
图标
图标放在了input框内,即重叠,使用absolute属性,然后避免不能点击图标,设置了图标的z-index属性(简单可理解为图层级,越大在越上面)

后面发现如果是将图标直接和输入框放入一个view中,会点击不了

放好图片自然设置了图标的点击事件(isSeePsw):

//密码可见性
    isSeePsw: function() {
      var that = this;
      var type = that.data.passwordType;
      var query = wx.createSelectorQuery('#2')
      if (type == 'text') {
        that.setData({
          passwordType: 'password',
          seePswImg: '../icon/eyeclose.png'
        })
        query.focus()
      }else {
        that.setData({
          passwordType: 'text',
          seePswImg: '../icon/eyeopen.png'
        })
        query.blur()
      }
    },

此方法是修改密码可见性,并且改变图标

发现点击图标时,虽然图标发生了改变,但是输入框内的密码并未随点击改变,思考了一下,微信动态加载的条件是某个数据发生修改,也就是说虽然我们把输入框的“type”属性修改了,可是并没有对输入框的内容进行操作,所以其是不会重新渲染的,故此我们加上一句:
谨记:只有数据重载才会重新渲染,否则就算把元素删除也不会重新渲染
而input的type算是一个比较奇葩的类,其实应该是将密码放入了内存中,显示的只是一个*或者.

passWord: that.data.passWord,

即把获取的输入框的密码,重新设置一次数据,作为更新,很简单的问题,特记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值