马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这个问题是做项目的时候碰到的。
密码框常规写法:- <view class="inputBox">
- <view class="input-container">
- <input type="{{inputType}}" placeholder="请输入密码" data-id="passwordValue" bindinput="getinput" value="{{passwordValue}}" placeholder-style="color:#ccc8c8" />
- <image class="eye-icon" src="{{isPasswordVisible ? '/images/open-eye.png' : '/images/closed-eye.png'}}" bind:touchstart="onEyeTouchStart" bind:touchend="onEyeTouchEnd"/>
- </view>
- </view>
复制代码 函数:onEyeTouchStart 和 onEyeTouchEnd 的实现:- onEyeTouchStart() {
- const passwordValue = this.data.passwordValue;
- this.setData({
- inputType: 'text',
- isPasswordVisible: true
- });
- },
- onEyeTouchEnd() {
- const passwordValue = this.data.passwordValue;
- this.setData({
- inputType: 'password',
- isPasswordVisible: false,
- });
- },
复制代码 然后就会出现以上的问题(真机上),后来查了不少资料,有个方法可以办理这个问题:
那就是改变input属性后刷新一下,我改进了一下,确实办理了这个问题,特此记录。
改进后的代码:- onEyeTouchStart() {
- const passwordValue = this.data.passwordValue;
- this.setData({
- inputType: 'text',
- isPasswordVisible: true,
- passwordValue:''
- },()=>{
- this.setData({
- passwordValue:passwordValue
- });
- });
- console.log('in onEyeTouchStart,inputType:',this.data.inputType,'isPasswordVisible',this.data.isPasswordVisible);
- },
- onEyeTouchEnd() {
- const passwordValue = this.data.passwordValue;
- this.setData({
- inputType: 'password',
- isPasswordVisible: false,
- passwordValue:''
- },()=>{
- this.setData({
- passwordValue:passwordValue
- });
- });
- console.log('in onEyeTouchEnd,inputType:',this.data.inputType,'isPasswordVisible',this.data.isPasswordVisible);
- },
复制代码 |