tdesign-miniprogram icon indicating copy to clipboard operation
tdesign-miniprogram copied to clipboard

[Input 输入框] IOS自动填充密码,无法获取用户名/密码的值

Open myifeng opened this issue 1 year ago • 10 comments

tdesign-miniprogram 版本

1.6.2

重现链接

No response

重现步骤

No response

期望结果

No response

实际结果

No response

基础库版本

No response

补充说明

No response

myifeng avatar Oct 21 '24 08:10 myifeng

👋 @myifeng,感谢给 TDesign 提出了 issue。 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。

github-actions[bot] avatar Oct 21 '24 08:10 github-actions[bot]

@myifeng 辛苦贴一下你的使用代码、真机测试机型等信息

我这边在13pro上预览了一下,可以获取密码,代码如下:

<t-input label="标签文字" value="{{tdValue}}" placeholder="请输入文字" type="password" bind:change="tdInput"></t-input>

// js
tdInput(e) {
  this.setData({
    tdValue: e.detail.value,
  });
  console.log('--tdInput--', e.detail.value);
},

anlyyao avatar Oct 22 '24 04:10 anlyyao

<t-input label="用户名" value="{{tdValue}}" placeholder="请输入文字" bind:change="tdInputUsername"></t-input>

<t-input label="密码" value="{{tdValue}}" placeholder="请输入文字" always-embed="{{true}}" type="password" bind:change="tdInputPassword" bindfocus="tdInputPassword" 	bindblur="tdInputPassword"></t-input>

<t-button class="login-btn" bindtap="login" theme="primary" size="large">登录</t-button>
tdInputUsername(e) {
  this.setData({
	  username: e.detail.value,
  });
  console.log(e)
  console.log('--username--', e.detail.value);
},
tdInputPassword(e) {
  this.setData({
	  password: e.detail.value,
  });
  console.log(e)
  console.log('--password--', e.detail.value);
},

点击密码输入框,选择IOS中的密码,表单会在用户名填充用户名,密码中填充......, 控制台会打印tdInputPassword的focus、blur日志,但是并没有获取到密码值。此时AppData中的password为undefined

在上一步操作后,手动点击密码输入框,使失焦和聚焦,此时才获取密码。 此时AppData中的password有值

但是因为用户名没有设置bindblur bindfocus,此时虽然用户名在UI上进行了填充,但是并没有获取到用户名的值。此时AppData中的username为undefined。

https://github.com/user-attachments/assets/3cf4ffa3-1427-4705-95f6-78e0688b47f6

myifeng avatar Oct 22 '24 09:10 myifeng

这里录屏密码显示空白,实际上是有填充黑色圆点的

<t-input label="用户名" value="{{tdValue}}" placeholder="请输入文字" bind:change="tdInputUsername"></t-input>

<t-input label="密码" value="{{tdValue}}" placeholder="请输入文字" always-embed="{{true}}" type="password" bind:change="tdInputPassword" bindfocus="tdInputPassword" 	bindblur="tdInputPassword"></t-input>

<t-button class="login-btn" bindtap="login" theme="primary" size="large">登录</t-button>
tdInputUsername(e) {
  this.setData({
	  username: e.detail.value,
  });
  console.log(e)
  console.log('--username--', e.detail.value);
},
tdInputPassword(e) {
  this.setData({
	  password: e.detail.value,
  });
  console.log(e)
  console.log('--password--', e.detail.value);
},

点击密码输入框,选择IOS中的密码,表单会在用户名填充用户名,密码中填充......, 控制台会打印tdInputPassword的focus、blur日志,但是并没有获取到密码值。此时AppData中的password为undefined

在上一步操作后,手动点击密码输入框,使失焦和聚焦,此时才获取密码。 此时AppData中的password有值

但是因为用户名没有设置bindblur bindfocus,此时虽然用户名在UI上进行了填充,但是并没有获取到用户名的值。此时AppData中的username为undefined。

176692c7ccc195eba8012facc7434e1d.mp4

这里录屏密码显示空白,实际上是有填充黑色圆点的

myifeng avatar Oct 22 '24 09:10 myifeng

@myifeng 你测试下这个代码片段:https://developers.weixin.qq.com/s/WIywo8mZ7nVs

我这边的效果和原生一致,

anlyyao avatar Oct 22 '24 12:10 anlyyao

我也存在同样的问题,用原生的input就正常,但是用t-input组件就无法自动填充。增加always-embed="{{true}}"后,可以自动填充,输入框内虽然填充了账号密码,但是并没有被value获取到,依然识别未填写。点击自动填充后,输入框会自动失去焦点,会不会是这个原因。真机预览机型:iPhone14pro

cncodehub avatar Oct 22 '24 16:10 cncodehub

@myifeng 你测试下这个代码片段:https://developers.weixin.qq.com/s/WIywo8mZ7nVs

我这边的效果和原生一致,

@myifeng 和 always-embed 莫关系,但尊的太奇怪了,我的机型是13pro,ios版本17.6.1,测试下来和原生input一致,如果方便的话,可以测试一下这个代码片段吗

anlyyao avatar Oct 23 '24 07:10 anlyyao

iOS平台原生也有概率出现, 小程序那边也有反馈这个问题的存在

dday55 avatar Oct 23 '24 10:10 dday55

你用ios设备,切换到中文,输入密码,不点击确认,密码框有圆点,但是获取不到值,哈哈哈

lihua0103 avatar Oct 24 '24 06:10 lihua0103

你用ios设备,切换到中文,输入密码,不点击确认,密码框有圆点,但是获取不到值,哈哈哈

密码框能支持中文输入? 🤯

anlyyao avatar Oct 24 '24 12:10 anlyyao

你可以自己切换输入法呀

lihua0103 avatar Oct 25 '24 01:10 lihua0103

你可以自己切换输入法呀

我这边的情况是:真机上,密码输入框,输入法会被强制切换为英文模式,无法切换。

anlyyao avatar Oct 25 '24 02:10 anlyyao

你可以自己切换输入法呀

我这边的情况是:真机上,密码输入框,输入法会被强制切换为英文模式,无法切换。

我试了一下,只有一个密码输入框是可以获取到值的,但是如果同时存在用户名、密码的输入框,就只有UI填空,change事件没有触发

myifeng avatar Oct 25 '24 03:10 myifeng

@myifeng 感谢您的使用反馈。经排查,原生input也存在此问题,基础调试库在3.2.5 (不含3.2.5)以上就有此问题,等待官方修复吧。

Boomkaa avatar Apr 27 '25 08:04 Boomkaa

邮件已收到,我会尽快处理!

myifeng avatar Apr 27 '25 08:04 myifeng

请问点击确定后,如何清除input的值呀?再点发起,存储的还是之前旧的input value

zxhans avatar Apr 30 '25 06:04 zxhans