uni-app textarea @input 异常执行

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

uni-app textarea @input 异常执行

开发环境 版本号 项目创建方式
Windows win11 HBuilderX
产品分类:uniapp/小程序/微信

PC开发环境操作系统:Windows

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

HBuilderX类型:正式

HBuilderX版本号:3.4.7

第三方开发者工具版本号:1.05.2201240

基础库版本号:2.24.2

项目创建方式:HBuilderX

### 示例代码:

```html
<template>      
    <view>      
        <template v-for="(message, index) in messages" :key="index">      
            <view class="message" [@longpress](/user/longpress)="msgAction(message)">      
                {{message.sender_nickname}}:{{message.content}}    
            </view>      
        </template>    
        <textarea v-model="content" placeholder="placeholder"></textarea>    
    </view>      
</template>      

<script>      
    export default {      
        data() {      
            return {      
                messages: [{      
                    content: "1",      
                    id: 1,      
                    sender_nickname: "佚名"    
                }],      
                content: ''      
            }      
        },    
        onShow() {      
            uni.request({      
                url: 'https://xxxx.xx/test',      
                success: (res) => {      
                },      
                fail: () => {      
                    this.messages.push({      
                        content: "2",      
                        id: 2,      
                        sender_nickname: "佚名"    
                    })      
                }      
            });      
        },      
        methods: {      
            msgAction(message){      
                uni.showToast({    
                    icon: 'none',    
                    title: 'content: '+message.content      
                })      
            }      
        }      
    }      
</script>      

操作步骤:

仅在ios发生 , 版本是15.4.1 ,
vue3 下异常 , vue2 正常
修改textarea值, 会执行@longpress方法

预期结果:

1

实际结果:

1

bug描述:

v-model=“content” 会执行@longpress=“msgAction(message)”

b69d1b07febcc32e418842d0b680b93c.zip


3 回复

感谢您的反馈,已加分,请查看相关问题:https://ask.dcloud.net.cn/question/139516


2月份到现在都没解决吗 , 震惊

uni-app 中使用 textarea 组件时,@input 事件用于监听用户输入的内容。如果你遇到 @input 事件异常执行的问题,可能的原因和解决方法如下:

1. 事件触发频率过高

@input 事件会在用户每次输入时触发,如果输入内容较多或输入速度较快,可能会导致事件频繁触发,进而引发性能问题或异常行为。

解决方法:

  • 使用 debounce(防抖)或 throttle(节流)来减少事件触发的频率。
  • 示例代码:
    <template>
      <textarea @input="handleInput" v-model="inputValue"></textarea>
    </template>
    
    <script>
    export default {
      data() {
        return {
          inputValue: '',
          timeout: null
        };
      },
      methods: {
        handleInput(event) {
          clearTimeout(this.timeout);
          this.timeout = setTimeout(() => {
            this.inputValue = event.detail.value;
            // 这里执行你的逻辑
          }, 300); // 防抖时间为300ms
        }
      }
    };
    </script>

2. v-model@input 同时使用

如果你同时使用了 v-model@input,可能会导致 @input 事件被多次触发或触发时机不正确。

解决方法:

  • 确保 v-model@input 的逻辑不会冲突。
  • 如果 v-model 已经绑定了数据,可以尝试直接在 v-model 绑定的数据变化时执行逻辑,而不是在 @input 中执行。

3. textarea 组件本身的 bug

在某些情况下,textarea 组件可能存在 bug,导致 @input 事件异常触发。

解决方法:

  • 确保 uni-app 的版本是最新的,可能存在已知的 bug 已经在最新版本中修复。
  • 如果问题依然存在,可以尝试使用 @blur 事件代替 @input,或者使用 @change 事件。

4. 异步操作导致的问题

如果在 @input 事件中执行了异步操作(如网络请求),可能会导致事件处理逻辑异常。

解决方法:

  • 确保异步操作的回调函数正确处理了事件的状态。
  • 使用 Promiseasync/await 来管理异步操作。

5. 样式或布局问题

某些情况下,textarea 的样式或布局可能会导致事件触发异常。

解决方法:

  • 检查 textarea 的样式,确保没有不必要的样式影响事件的触发。
  • 确保 textarea 的布局没有与其他元素重叠或冲突。

6. 平台差异

uni-app 在不同平台上(如微信小程序、H5、App 等)可能会有不同的行为。

解决方法:

  • 检查是否在特定平台上出现问题,如果是,可能需要针对该平台进行特殊处理。

示例代码

以下是一个简单的 textarea 使用示例,包含 @input 事件的处理:

<template>
  <view>
    <textarea @input="handleInput" v-model="inputValue"></textarea>
    <text>{{ inputValue }}</text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    };
  },
  methods: {
    handleInput(event) {
      this.inputValue = event.detail.value;
      // 这里执行你的逻辑
    }
  }
};
</script>

<style scoped>
textarea {
  width: 100%;
  height: 100px;
  border: 1px solid #ccc;
}
</style>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!