5***@qq.com
5***@qq.com
  • 发布:2024-04-25 17:58
  • 更新:2024-04-25 18:02
  • 阅读:108

【报Bug】基础表单组件 input 设置为 密码类型 时,会吞掉默认值

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 4.08

手机系统: Android

手机系统版本号: Android 14

手机厂商: 魅族

手机机型: MEIZU 20

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

下面的部分是原本代码,因为设置了 password 属性,导致nvue情况下,type直接失效

<input v-else :type="type === 'password' ? 'text' : type" class="uni-easyinput__content-input" :style="inputStyle"  
                :name="name" :value="val" :password="!showPassword && type === 'password'" :placeholder="placeholder"  
                :placeholderStyle="placeholderStyle" placeholder-class="uni-easyinput__placeholder-class" :disabled="disabled"  
                :maxlength="inputMaxlength" :focus="focused" :confirmType="confirmType" :cursor-spacing="cursorSpacing"  
                :adjust-position="adjustPosition" @focus="_Focus" @blur="_Blur" @input="onInput" @confirm="onConfirm"  
                @keyboardheightchange="onkeyboardheightchange" />  
            <!-- #endif -->

操作步骤:

渲染一个密码输入框,绑定默认值,绑定input事件

预期结果:

预期默认值会正常显示

实际结果:

默认值被 input 事件传递的空值覆盖

bug描述:

基础表单组件 input 设置为密码类型时,会吞掉默认值,经检查,在安卓机型下,input组件的 input 事件会自动触发,以空值覆盖默认值。

另外,uni-ui 的 easyinput 组件也因为没有区分app的环境,将多端代码写在一起,导致一旦设置了 password 属性的值,点击非密码类型的表单都会弹出字符类型的键盘,代码如下贴在下方,如果直接设置

2024-04-25 17:58 负责人:无 分享
已邀请:
5***@qq.com

5***@qq.com (作者)

<input :value="loginForm.password" type="password" @input="input"  />  

const input = (event) => {  
  let value = event.detail.value;  
  console.log('val', value);  
  loginForm.value.password = value  
}

以上是最基础的复现例子

要回复问题请先登录注册