w***@126.com
w***@126.com
  • 发布:2020-12-24 15:05
  • 更新:2022-12-05 21:49
  • 阅读:1444

【报Bug】Nvue页面中textarea组件的focus属性动态变化无效。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 2.9.8

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: mate20

页面类型: nvue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<template>  
    <view class="content">  
        <image class="logo" src="/static/logo.png"></image>  
        <view class="text-area">  
            <text class="title">{{title}}</text>  
            <text @click="changeFocus" style="margin: 10px;">change  textFocus</text>  
        </view>  
        <textarea style="width: 300px;height: 100px; background-color: #4CD964; margin-top: 20px;margin-bottom: 20px;" value="textarea区域" :focus="textFocus" placeholder=""></textarea>  
        <text @click="gotoT">去vue页面</text>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                title: 'Hello Nvue 页面',  
                textFocus: false  
            }  
        },  
        onLoad() {  
            uni.onKeyboardHeightChange(res => {  
                console.log('', res.height)  
                if (this.pageShow) { // 只有在页面显示的时候才执行操作  
                    this.keyboardHeight = res.height;  
                }  
            });  
        },  
        methods: {  
            gotoT() {  
                uni.navigateTo({  
                    url: '/pages/test/test'  
                })  
            },  
            changeFocus() {  
                this.textFocus = !this.textFocus;  
                console.log('changeFocus2---', this.textFocus);  
            }  
        }  
    }  
</script>  

<style>  
    .content {  
        display: flex;  
        flex-direction: column;  
        align-items: center;  
        justify-content: center;  
    }  

    .logo {  
        height: 200rpx;  
        width: 200rpx;  
        margin-top: 200rpx;  
        margin-left: auto;  
        margin-right: auto;  
        margin-bottom: 50rpx;  
    }  

    .text-area {  
        display: flex;  
        justify-content: center;  
    }  

    .title {  
        font-size: 36rpx;  
        color: #8f8f94;  
    }  
</style>  

操作步骤:

见bug描述和示例项目

预期结果:

focus能如期生效

实际结果:

focus没有如期生效

bug描述:

Nvue中使用textarea组件,其中的focus属性通过变量来动态变化。出现的问题如下:

  1. 组件初始化完成后直接通过按钮改变变量的布尔值,textarea并没有如期获取焦点并弹起键盘或失去焦点隐藏键盘的现象出现。
  2. 手动点击textarea组件区域,让其获取过焦点之后,之后再去通过按钮改变变量的布尔值,可如期获取失去焦点和显隐键盘。
  3. 组件初始化完成后,立即跳转到新页面去再返回当前页面,此时的textarea组件居然有焦点光标存在。
2020-12-24 15:05 负责人:DCloud_App_Array 分享
已邀请:
DCloud_UNI_Anne

DCloud_UNI_Anne

问题已记录,已加分,感谢您的反馈!

已确认 nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点。

  • w***@126.com (作者)

    记录好久了,啥时候能修复啊?

    2021-01-19 15:39

  • 3***@qq.com

    回复 w***@126.com: 可以了吗这个

    2021-11-24 17:04

w***@126.com

w***@126.com (作者) - 前端小白菜

急需解决!

w***@126.com

w***@126.com (作者) - 前端小白菜

现在Android上面特别容易出现此问题。

l***@gmail.com

l***@gmail.com

希望尽快处理 很急的

  • DCloud_UNI_GSQ

    已确认 nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点

    2021-01-25 19:51

  • 2***@qq.com

    回复 DCloud_UNI_GSQ: 使用ref 获取元素调用focus()依然不生效

    2021-09-09 10:27

  • 3***@qq.com

    回复 2***@qq.com: 解决了吗

    2021-11-24 14:16

  • 3***@qq.com

    回复 DCloud_UNI_GSQ: 压根不行啊 怎么回事这个问题都半年了 一点头绪都没吗

    2021-11-24 14:17

  • DCloud_UNI_GSQ

    回复 3***@qq.com: iOS 还是安卓?

    2021-11-30 16:25

  • pure111

    回复 DCloud_UNI_GSQ: 安卓模拟器

    2022-05-09 09:03

  • 嗨喔科技

    回复 2***@qq.com: 我测试了好像是可以的 focus()进行聚焦,blur()进行失焦 v3.6.15

    2023-01-08 15:26

1***@qq.com

1***@qq.com

请问解决了吗 这个问题

要回复问题请先登录注册