uni-app 输入框焦点时选择文字中切换页面异常

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 输入框焦点时选择文字中切换页面异常

操作步骤:

预期结果:

消失

实际结果:

未消失

bug描述:

2个页面
1、第一个页面有个文本框,
2、第二个页面可以没有任何东西。作为下一页
点击文本框处于编辑状态,键盘弹起,
输入部分文字,长按弹出选择文字等相关选项,保持这个状态不变。
uni.navigateTo 下一个页面,这个时候,上一个页面的相关选择文字的功能依然保留在下一个页面中,
其他设备未测试

提示其他问题:
打开带有textarea的界面,点击文本框处于编辑状态,刚点的时候,有一个 光标小球,在光标小球消失前,切换页面,切换页面完成后,光标小球依然会在新的页面显示一段时间,然后再消失,

图片

Image 1 Image 2

表格

项目 信息
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 win10
HBuilderX 正式
HBuilderX版本 4.29
手机系统 Android
手机版本号 Android 9.0
手机厂商 小米
手机机型 荣耀青春10
页面类型 vue
Vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

2 回复

现在是在 onhide 里面通过 ,主动失去焦点。 this.$refs.textArea.blur();


在处理 uni-app 中输入框获得焦点时选择文字并在切换页面时出现的异常问题,通常这类问题涉及到页面生命周期管理、事件处理以及焦点状态的保持。以下是一个简化的代码示例,展示了如何在 uni-app 中处理输入框焦点状态,并确保在切换页面时不会出现异常。

1. 页面A(包含输入框)

<template>
  <view>
    <input 
      type="text" 
      ref="myInput" 
      @focus="handleFocus" 
      @blur="handleBlur" 
      v-model="inputValue"
    />
    <button @click="navigateToPageB">Go to Page B</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      inputValue: '',
      isFocused: false
    };
  },
  methods: {
    handleFocus() {
      this.isFocused = true;
      this.$refs.myInput.select(); // 自动选择所有文本
    },
    handleBlur() {
      this.isFocused = false;
    },
    navigateToPageB() {
      if (this.isFocused) {
        // 在这里可以添加逻辑,比如提示用户保存输入或取消选择
        uni.showToast({
          title: 'Please save or blur input first',
          icon: 'none'
        });
      } else {
        uni.navigateTo({
          url: '/pages/pageB/pageB'
        });
      }
    }
  }
};
</script>

2. 页面B(目标页面)

页面B的代码相对简单,这里主要展示基本的页面结构,确保可以正常导航到。

<template>
  <view>
    <text>Welcome to Page B</text>
  </view>
</template>

<script>
export default {
  // 页面B的相关逻辑可以在这里添加
};
</script>

关键点说明

  • 焦点管理:通过 handleFocushandleBlur 方法管理输入框的焦点状态。
  • 选择文本:在 handleFocus 方法中,使用 this.$refs.myInput.select() 自动选择输入框中的所有文本。
  • 页面导航条件:在 navigateToPageB 方法中,检查输入框是否处于焦点状态,如果是,则提示用户保存或取消选择后再导航;否则,正常导航到页面B。

通过这种方式,可以确保在输入框获得焦点并选择文本时,用户尝试切换页面时能够得到适当的提示,避免潜在的异常行为。这种方法结合了 uni-app 的页面生命周期管理和事件处理机制,确保了应用的稳定性和用户体验。

回到顶部